簡體   English   中英

從jar文件中,從類中調用main方法,該類從jar外部實現一個類

[英]From a jar file, calling the main method from a class that implements a class from outside the jar

假設我有一個名為“ MyJar.jar”的jar文件,其中的類定義如下:

import SomeInterface;

public class MyClass implements SomeInterface {
   static public void main ( String args[] ) {
     ...
   }
}

但是請注意,接口“ SomeInterface”不在jar文件中。 而是在另一個名為“ SomeJar.jar”的jar文件中引用了它

我的manifest-mf文件確實包含以下內容:

Main-Class: MyClass

現在,假設我嘗試使用似乎可行的語法在jar文件中的“ MyClass”類上運行“ main”方法,即:

java -cp SomeJar.jar -jar MyJar.jar

在這種情況下,我得到如下信息:

Error: Could not find or load main class MyClass

但是,如果我像這樣修改語法,一切都會正常工作:

java -cp SomeJar.jar;MyJar.jar MyClass

為了進行健全性檢查,我確實使用了帶有適當清單文件條目的'HelloWorld'類進行了前一個調用,並且該調用有效。 看來,僅當所討論的類實現的接口無法立即供jar文件使用,而是存在於其外部時,才會出現此問題。 (這也可能在擴展類時發生,但是我沒有檢查)如您所見,我可以使事情工作……只是不使用我認為可以工作的'java -jar'語法。 另外,使用前一種方法,無論是否在“ java -jar”調用中包括“ -cp”類路徑,我都不會收到“ NoClassDefFoundError”錯誤(我以為是)。

有什么想法為什么前一個“ java -jar”調用不起作用(並且似乎沒有給出為什么它不起作用的任何很好的錯誤)而后一個“ java”調用可以正常工作?

-cp-jar選項都設置(而不是附加)基礎類路徑。 命令行上的最后一個選項將覆蓋所有以前的-cp-jar選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM