我試圖使用以下命令行語法運行基於java的工具:java -cp archive.jar archiveFolder.theMainClassName.Although類正在搜索,一個主類,「theMainClassName」在archive.jar中,並在輸入給出的archiveFolder中,我不斷收到我的類沒有看到的錯誤。有人對這個問題有任何想法嗎?預先感謝您從Jar文件中讀取類的Java命令行問題
回答
這裏是什麼做工作一個具體的例子,這樣你可以比較自己的SI tuation。
把這段代碼放在任何地方,放在一個名爲MainClass.java
的文件中。 (我假設一個目錄中稱爲src
後通常你會安排源到包匹配,當然。)
package archiveFolder;
public class MainClass
{
public static void main(String[] args)
{
System.out.println("I'm MainClass");
}
}
然後運行這些命令:
# Compile the source
javac -d . src/MainClass.java
# Build the jar file
jar cf archive.jar archiveFolder
# Remove the unpackaged binary, to prove it's not being used
rm -rf archiveFolder # Or rmdir /s /q archiveFolder on Windows
# Execute the class
java -cp archive.jar achiveFolder.MainClass
結果:
I'm MainClass
你是如何構建你的jar文件的?代碼是否在適當的包中?
也許與java -jar archive.jar
?
當然,假設清單指向正確的類...
你應該給你得到了確切的消息,它可能會擺脫更多的光。
編輯:有關在jar清單文件中設置應用程序入口點(主類)的信息,請參見Working with Manifest Files: The Basics。
這實際上並沒有回答這個問題......他不是試圖運行jar而是jar中的特定類。這幾乎肯定是一個包裝問題。 – 2008-11-15 22:31:39
確實theMainClassName類的頂部有以下包裝線:
package archiveFolder
您需要的類文件是在相同的目錄結構中聲明的包。所以,如果你有這樣的事情:
org/jc/tests/TestClass.class
它的源文件必須是這樣的:
package org.jc.tests;
public class TestClass {
public static void main(String[] args) {
System.out.printf("This is a test class!\n");
}
}
然後,你可以使用以下方法來創建jar文件和命令行運行它(假定當前目錄是在頂層,略高於ORG):
$ jar -cf testJar.jar org/jc/tests/*.class
$ java -cp testJar.jar org.jc.tests.TestClass
通常當一個從屬類(靜態部件)沒有發現發生這種情況 - 像這樣,使用的log4j:
public class MyClass {
private static Logger log = Logger.getLogger("com.example");
}
其理由是,這樣的靜態成員的初始化可以理解爲部分類加載 - 錯誤導致類不可用(可加載),導致您描述的錯誤。
靜態構造函數是另一個可能的原因:
public class MyClass {
static {
// <b>any</b> error caused here will cause the class to
// not be loaded. Demonstrating with stupid typecast.
Object o = new String();
Integer i = (Integer) o;
}
}
我認爲其他人已經覆蓋了一些常見的東西在這裏。我會打開罐子,並確保列出了這個類。我還會仔細檢查該類是否公開,並且方法是「public static void main(String [] arg)」。
- 1. Java命令行JAR文件
- 2. .jar庫的Java命令行問題
- 3. Sscanf問題和從命令行讀取
- 4. 從命令行讀取文本文件
- 5. Java jar文件的命令行選項
- 6. 讀取命令行參數,從文件
- 7. 如何從命令行讀取文件
- 8. 從命令行參數中讀取文件時發生Java FileNotFoundException
- 9. Java包括jar文件命令行
- 10. Java jar文件命令行參數
- 11. 從Java運行命令行的問題
- 12. Java:從命令行運行的問題
- 13. 從依賴於jar文件的命令行運行Java程序?
- 14. Java類無法讀取jar文件
- 15. Java文件讀取問題
- 16. java文件讀取問題
- 17. Java文件讀取問題
- 18. 從Java執行命令的問題
- 19. Java從文件讀取問題
- 20. Java - 從文件讀取問題
- 21. 在java中讀取命令行中的文件
- 22. NoClassDefFoundError當從Windows命令行運行Java與外部jar文件
- 23. 使用命令行從文件讀取數據Java
- 24. 讀取命令行Java中的財產
- 25. 在java中讀取文件的問題
- 26. 將Jar文件作爲無java -jar前綴的命令運行
- 27. 從命令行運行java類,包括來自jar的庫
- 28. 的命令行參數,讀取文件
- 29. 使用命令行創建Jar文件時出現問題
- 30. java程序來讀取命令行的文本文件
運行命令`jar tf`併發布結果。 剪切並粘貼您正在使用的確切命令行,以及java命令輸出的確切錯誤消息。 –
erickson
2008-11-15 22:22:13