我試圖使用以下命令行語法運行基於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. 從Java運行命令行的問題
- 8. Java類無法讀取jar文件
- 9. 在java中讀取命令行中的文件
- 10. 從Java執行命令的問題
- 11. Java從文件讀取問題
- 12. Java文件讀取問題
- 13. Java文件讀取問題
- 14. java文件讀取問題
- 15. NoClassDefFoundError當從Windows命令行運行Java與外部jar文件
- 16. 使用命令行從文件讀取數據Java
- 17. 讀取命令行Java中的財產
- 18. java程序來讀取命令行的文本文件
- 19. 讀取命令的輸出或從文件中讀取
- 20. unix命令通過傳遞行號從文件中讀取行
- 21. 從Spring JAR讀取文件
- 22. 從作爲命令行爭論傳遞的文件中讀取
- 23. 從程序集中的命令行讀取文件名
- 24. 從文件中讀取時執行exec命令的重要性
- 25. 通過命令行從Jar運行Java類
- 26. Java/JavaFX,從項目和jar文件中讀取文件
- 27. 命令行參數或讀取文件
- 28. 從eclipse插件中的jar文件中讀取類名
- 29. 從一堆.Java文件通過一條簡單的命令從命令行跳轉到一個.Jar文件
- 30. 從java中的文件中讀取數據時出現問題
運行命令`jar tf`併發布結果。 剪切並粘貼您正在使用的確切命令行,以及java命令輸出的確切錯誤消息。 –
erickson
2008-11-15 22:22:13