当我尝试用javac.main编译时
D:\Desktop\Development\Java\Section 4\Abstract
❯ javac -classpath . *.java
error: Invalid filename: *.java
Usage: javac <options> <source files>
use --help for a list of possible options
[17:37] Shell xUSAGE 174ms
Main.java:5: error: cannot find symbol
Student st1 = new Student("John");
^
symbol: class Student
location: class Main
Main.java:5: error: cannot find symbol
Student st1 = new Student("John");
^
symbol: class Student
location: class Main
2 errors
但是我能够成功地编译它
D:\Desktop\Development\Java\Section 4\Abstract\src\com\Testing
>javac -classpath . *.java
虽然我还没有弄清楚如何运行Main类
java Main
Error: Could not find or load main class Main
Caused by: java.lang.NoClassDefFoundError: com/Testing/Main (wrong name: Main)
1条答案
按热度按时间bnl4lu3b1#
如果你想直接使用
javac
来编译(实际上,不要使用编译系统),你必须指定文件在文件系统中的位置。所以不是*.java
,而是src\com\Testing\*.java
。是的,如果你有很多包,这意味着一个非常大的命令行。java
的参数接受一个类名-一个完全限定的类名。而不是路径。如果您有此源文件:
然后道:
projectRoot/src/main/java/com/foo/Bar.java
中,其中projectRoot
是作为主项目文件夹的目录,src/main/java
可以只是src
,或者src/whatever
--或者指示它所涵盖的子项目类型的内容,com/foo
匹配包语句,Bar
匹配公共类名。Bar.class
福尔斯出来了;这应该在projectRoot/bin/com/foo/Bar.class
或类似的地方,其中bin
也可能是build
。但是com/foo/Bar.class
部分是强制的-类文件 * 必须 * 在与包匹配的子目录结构中。projectRoot/bin
放在类路径上,然后写出完整的类名。