我对 Java 编程非常陌生。由于我原来的java类包含太多方法,我想将其中一些方法移动到另一个类,所以我创建了一个新类MergerHTML。
在拥有第二个类文件之前,我使用命令 "javac -cp "./lib/*:lib/*" src/AAA.java"
编译并使用命令 "java -classpath "lib/*:lib/*" src/AAA.java data/*"
运行程序。
我在这里已经很困惑了。如果我不输入".java"
在运行命令中,消息:
"Error: Could not find or load main class src.AAA
Caused by: java.lang.ClassNotFoundException: src.AAA"
将会出现。为什么会发生这种情况?
添加第二个类文件后。我使用命令 "javac -cp "./lib/*:lib/*" src/AAA.java src/MergerHTML.java"
编译程序,没有发现错误。
但是,当我使用命令 "java -classpath "lib/*:lib/*" src/AAA.java data/*"
时,以下是产生的错误:
src/AAA.java:441: error: cannot find symbol
MergerHTML mHTML = new MergerHTML();
^
symbol: class MergerHTML
location: class AAA
我的主类文件如下所示:
public class AAA {
....
public static void main(final String[] args) throws Exception {
MergerHTML mHTML = new MergerHTML();
mHTML.print();
}
}
辅助类文件如下所示:
public class MergerHTML{
public void print(){
System.out.println("hiiiiii");
}
}
最佳答案
而不是
java -classpath "lib/*:lib/*" src/AAA.java data/*
您需要指定要执行的编译类(而不是它的来源),您不需要在类路径中两次 lib/*
,但您确实需要当前文件夹(实际上,包含已编译类的文件夹,在本例中是当前文件夹)。就像(在 Windows 上将 :
更改为 ;
),
java -classpath "lib/*:." AAA data/*
注意:放置类的更常规位置是 bin
文件夹(您可以将其命名为任何您喜欢的名称,但是当类全部收集在“干净”的树中)。所以,类似
mkdir bin
javac -cp "lib/*" -d bin src/AAA.java src/MergerHTML.java
java -classpath "lib/*:bin" AAA data/*
最后,如果您使用的是 Windows,上面的最后一个命令应该是
java -classpath "lib/*;bin" AAA data/*
关于java - 如何在不制作包的情况下运行具有多个类文件的java程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57683931/