2017-08-02 20 views
0

我想用一個庫.jar文件編譯一堆.java文件。在此topic之後,我以前的GUI程序運行良好。但是,這個命令行程序失敗!無法找到或加載主類,但.class存在

$ /opt/jdk1.8.0_131/bin/javac -classpath lib/*.jar *.java 
$ ls 
Module1.class Cross.class Ora.java Safe.class 
Module1.java Cross.java p1/  Safe.java 
lib/   Ora.class  
$ grep main Module1.java 
    public static void main(String[] args) { 
$ ls lib 
jsoup-1.10.3.jar 
$ /opt/jdk1.8.0_131/bin/java -classpath .:lib/* Module1 
Error: Could not find or load main class Module1 

我該如何解決這個問題?

回答

1

Module1.java沒有包聲明嗎?如果有一個包語句那就需要被移動到打包文件夾,並用如下命令

/opt/jdk1.8.0_131/bin/java -classpath .:lib/* package.Module1 

跑,我不知道會classpath中支持通配符,但看起來像補充說,在Java 6中所示從命令行運行java多久。

如果您不確定自己在問什麼,請將Module1.java的主體添加到您的問題中。

+0

'包Moule1;'被添加到所有java文件的頂部。正如你可以看到沒有包文件,我必須移動到包文件夾。 – mahmood

+0

所以,我刪除了包裝聲明,現在好了!我不認爲我現在需要一個包 – mahmood

+0

如果包是Module1,那麼類文件需要位於Module1目錄中,而java命令將爲 \t '/opt/jdk1.8.0_131/bin/java -classpath。 :lib/* Module1.Module1' 約定是在軟件包目錄中創建.java文件,因此當編譯器創建類文件時,軟件包的目錄結構已經就位。沒有簡單的測試程序包就沒問題,但它在使用方法上有限制。 –

相關問題