2017-08-02 18 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文件,因此当编译器创建类文件时,软件包的目录结构已经就位。没有简单的测试程序包就没问题,但它在使用方法上有限制。 –

相关问题