![](/img/trans.png)
[英]'Java.lang.NoClassDefFoundError` for ProtoOperationTransformers occurs at runtime
[英]Why occurs a java.lang.NoClassDefFoundError when I use args4j in a batch built by mvn:assembly
對於各種實驗,我將在github中處理一個Java項目。
在Maven構建之后,該程序將使用腳本bat運行。
現在,我打開了一個分支,因為我將使用庫args4j來解析參數。
構建工作正常,罐子存在於目錄lib中 ,但是當我運行時,我具有此Exception的stacktrace
線程“主”中的異常java.lang.NoClassDefFoundError:org / kohsuke / args4j / CmdLineException在java.lang.Class.getDeclaredMethods0(本機方法)在java.lang.Class.privateGetDeclaredMethods(Class.java:2625) .class.getMethod0(Class.java:2866)at java.lang.Class.getMethod(Class.java:1676)at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)at sun.launcher.LauncherHelper.checkAndLoadMain( LauncherHelper.java:486)原因:java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)處的java.lang.ClassNotFoundException:org.kohsuke.args4j.CmdLineException java.net.URLClassLoader $ 1.run(URLClassLoader。 sun.misc上java.lang.ClassLoader.loadClass(ClassLoader.java:425)上java.net.URLClassLoader.findClass(URLClassLoader.java:354)上java.security.AccessController.doPrivileged(本地方法)上的java:355) .Launcher $ AppClassLoader.loadClass(Launcher.java:308)at java.lang.ClassLoader.loadClass(ClassLoader.java:358)...還有6個
在bat中,我配置了類路徑,以便lib中的args4j jar:這是bat腳本的說明
SET JAVA_DIR=C:\Program Files\Java\jdk1.7.0_80\bin\
>CUT
"%JAVA_DIR%\java" -jar ".\lib\buildCSS-1.0.jar" -cp ".\lib\" -conf "./conf/environment.properties"
我不理解java.lang.NoClassDefFoundError的處理。 該罐子存在並通過-cp選項鏈接
請問您有什么想法(和解決方案)?
您不能在命令行上組合-jar
和-cp
參數。 如果java
命令看到-jar
則它將jarfile名稱之后的所有內容都視為應用程序參數,並且它會忽略所有較早的classpath參數。
您有兩種選擇:
-cp
,在類路徑中包含主JAR,然后在命令行上輸入主類的完整類名。 -jar
,並在列出所有依賴項的主JAR清單文件中添加“ Class-Path”屬性。 參考文獻:
注意:由於您正在使用Maven構建JAR文件,因此還有其他選項; 例如
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.