![](/img/trans.png)
[英]Manifest/Class-Path in jar file not successfully setting a directory on the CLASSPATH for log4j2.xml
[英]Classpath problem: .jar file can access a file from Class-Path in manifest, but not from -cp command line parameter
我在此目錄結構中有文件foo.jar:
+--+- /foo_lib
| |
| +- Ice.jar ...
|
+-- /swt-linux-gtk -- swt.jar
|
+-- foo.jar
清單顯示的部分內容:
Class-Path: . foo_lib/Ice.jar swt-linux-gtk/swt.jar foo_lib/o
rg.eclipse.core.commands_3.5.0.I20090525-2000.jar...
可以通過命令毫無問題地啟動它
java -jar foo.jar
到現在為止還挺好。 問題是我想從命令行將路徑設置為swt.jar(而不是其他路徑)(因為不同的平台需要不同版本的swt.jar)。 因此,我從清單中刪除了swt-linux-gtk/swt.jar
並運行以下命令:
java -cp swt-linux-gtk/swt.jar -jar foo.jar
不幸的是,這行不通,並且出現了以下異常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Display
at scsadmin.BootStrapper$.main(BootStrapper.scala:90)
at scsadmin.BootStrapper.main(BootStrapper.scala)
at scsadmin.JavaMain.main(JavaMain.java:9)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Display
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 3 more
清單中有“ Class-Path
部分時, -cp
是否被忽略? 還是我想念其他東西?
從java -jar的手冊頁中:
使用此選項時,JAR文件是所有用戶類的源,而其他用戶類路徑設置將被忽略。
似乎jar也在使用自定義類加載器來加載捆綁的jar。
當您使用“ java -jar”時,-classpath選項將被忽略。
有關更多詳細信息,請參見http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/linux/java.html 。
“使用此選項時,JAR文件是所有用戶類的源,而其他用戶類路徑設置將被忽略。”
干杯,唐納德。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.