2011-05-12 101 views
5

我試圖從jar文件運行一個java程序。 Java找不到支持的marc4j類。我究竟做錯了什麼。這裏是細節未找到Java類

在我目前的直接是MarcTry.jar這是我的主要類。還有marc4j.jar其中有缺少的類:

org/marc4j/MarcReader 

例如:

java -jar MarcTry.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/marc4j/MarcReader Caused by: java.lang.ClassNotFoundException: org.marc4j.MarcReader 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) Could not find the main class: marctry.Main. Program will exit.

我已經試過

Java的罐子MarcTry.jar -classpath marc4j.jar

有和沒有marc4j.jar一個完全合格的路徑。

歡迎任何想法。

回答

3

當您使用「-jar」開關時,classpath被忽略。用「-classpath」指定兩個jar並使用完全限定名稱執行主類。

E.g. java命令MarcTry.jar; marc4j.jar com.domain.MainClass

..或在MarcTry.jar

的清單文件中添加marc4j.jar到類路徑條目

你可以閱讀有關添加罐子這裏清單文件的classpath:Adding Classes to the JAR File's Classpath

+0

我認爲,解決我的問題謝謝!現在又缺少一個班級,但我知道下一步如何解決這個問題。 (你的答案中的分號是一個錯字,冒號有效。) – Thwaites 2011-05-12 19:32:38

+0

冒號與分號是平臺特定的 – 2011-05-12 19:34:53

+0

好極了!如果您願意,您可以將此答案標記爲正確。這將標誌着其他人已經回答了這個問題。 – Kaj 2011-05-12 19:35:03

1
java -cp <complete path for your supporting jar>;<your jar which you want to run> 

(出於安全放在同一文件夾兩個罐子)