![](/img/trans.png)
[英]Java Jar file main class run when runs from command line, but not from Windows batch file
[英]Run a class in a sub package in a jar file on Windows command line
我從eclipse中導出了一個jar文件,在jar文件中有Java類文件的各種包和子包。
我想在Windows的命令行中運行這些嵌套類文件之一。
該類有一個main,我正在使用以下代碼嘗試運行它,
java -classpath .;./example.jar example
請注意,示例是類以及jar的名稱。
我也曾嘗試闡明課程的完整路徑
java -classpath .;./example.jar the.whole.path.example
如何運行示例類?
編輯:
好的,這有點愚蠢,完整路徑不正確。 我檢查了無數次,但是直到我回到它時,我才注意到錯誤。
沒有看到您的任何代碼或任何輸出(提示,提示),很難說是怎么回事,但這對我有用:
$ cat x/y/z/A.java
package x.y.z;
public class A
{
public static void main(String args[]) throws Exception
{
System.out.println("here in A");
}
}
$ javac x/y/z/A.java
$ jar cvf a.jar x/y/z/A.class
added manifest
adding: x/y/z/A.class(in = 459) (out= 311)(deflated 32%)
$ java -classpath a.jar x.y.z.A
here in A
並且如果發帖人或以后會讀到此書的人對Unix不熟悉,以$開頭的行是我在shell中鍵入的命令,其他所有內容都從這些命令輸出。 Eclipse將為您處理前三個問題,然后最后一個java -classpath a.jar xyzA
是執行xyzA類中的main方法的命令。
僅運行java -cp example.jar the.whole.path.example
應該可以解決問題。 如果不是,則JAR文件中的內容有誤。 類名必須是完全限定的(帶有包名),並且指定的類必須具有正確的main方法:
public static void main(String[] args) {
}
檢查您的假設是否正確。 顯示罐子的結構並將其與您嘗試運行的罐子進行比較:
jar tf example.jar
如果罐子中包含很多條目,則可能要grep /查找相關的類:
jar tf example.jar | find /i "Example"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.