2010-11-07 122 views
1

我已經下載了一個xSocket.jar,它將用作classpath並編譯myprogram.jar,兩者都在Java文件夾中。 在Manifest中添加類路徑能夠找到xSocket.jar,而無需在命令行中定義-cp清單中的類路徑

在我的命令行D:\>的位置,我在myprogram.jar試圖運行java -jar java\myprogram.jar -n 0

Exception in thread "main" java.lang.NoClassDefFoundError: org/xsocket/connectio 
n/IBlockingConnection 
     at myprogram.main(myprogram.java:114) 
Caused by: java.lang.ClassNotFoundException: org.xsocket.connection.IBlockingCon 
nection 
     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) 
     ... 1 more 

我的清單:

Manifest-Version: 1.0 
Created-By: 1.6.0_22 (Sun Microsystems Inc.) 
Main-Class: myprogram 
Class-Path: xSocket 

回答

2

您需要使用擴展指定完整的jar文件名即。請查詢here瞭解更多信息。

Class-Path: xSocket.jar 
+0

是的,它的工作!難怪,我花了2天時間讓我的Flash應用程序NativeProcess工作,因爲它有一個無法正確使用-cp執行Jar的bug。但我可以在絕對路徑中聲明classpath嗎?如「D:\ java \ xSocket.jar」沒有雙引號? – Proyb2 2010-11-07 07:03:26

1

是增加在清單能夠 類路徑找到xSocket.jar無需 定義在命令行一個-cp?

是的,就是這樣。

你應該在你的myprogram.jar類傳球值更改爲

Class-Path: relatedPath/xSocket.jar

+0

嗯,如果兩個jar都在同一個文件夾中,意思是我還必須添加relatedPath?爲什麼? – Proyb2 2010-11-07 06:59:23

+1

@ user217582:如果兩個罐子都在同一個文件夾中,那麼相對路徑是一個空字符串(當然不需要斜線)。順便說一句,不同的罐子被空間隔開。 – Roman 2010-11-07 07:08:06

+0

太棒了,我還有一個問題,如果我必須聲明2個或多個不同文件夾的類路徑,該怎麼辦?以及我如何聲明多個jar?使用*「一個雙引號的星號?對不起,由於我忙於大量的Actionscript項目,所以在閱讀Java時有點懶。 – Proyb2 2010-11-07 07:12:19

相關問題