如何在任何文件夹中执行java.class?
How to excute java.class in any folder?
这是我的文件夹:
$ tree
.
├── src
│ ├── Main.class
│ ├── Main.java
│ └── xyz
│ └── bitfish
│ ├── Fish.class
│ └── Fish.java
如果我尝试在当前文件夹中执行 Main.class,它将失败:
$java src/Main
Error: Could not find or load main class src.Main
Caused by: java.lang.NoClassDefFoundError: Main (wrong name: src/Main)
$ java src.Main
Error: Could not find or load main class src.Main
Caused by: java.lang.NoClassDefFoundError: Main (wrong name: src/Main)
但如果我尝试在 src 文件夹中执行此操作,就可以了
$ cd src
src$ java Main
// it works
问题是什么?如何在任何 foler 中执行 Main.class?
尝试使用命令:
java -classpath src Main
当你发出指令时
java src/Main --> 然后 java 不仅尝试使用 src 文件夹中的 class;但它还假定包是 src.Main ;所以试图以这种方式执行它会给你一个错误;除非由 Main.java --> Main.class 定义的 class 除了在目录 src.
中之外在包 "src" 中
当你 运行 java -help
时,你会得到这个输出:
Usage: java [options] <mainclass> [args...]
(to execute a class)
...
这条短信说 <mainclass>
,意思是 "the fully qualified name of the Java class, regardless of where it is saved in the file system"。
当你 运行 java src.Main
或 java src/Main
时,你告诉 java
命令 运行 class src.Main
,在 class 路径中不存在。
要解决此问题,请将 class 路径设置为 src
(因为那是 .class
文件所在的位置),然后 运行 class称为 Main
:
java -classpath src/ Main
这是我的文件夹:
$ tree
.
├── src
│ ├── Main.class
│ ├── Main.java
│ └── xyz
│ └── bitfish
│ ├── Fish.class
│ └── Fish.java
如果我尝试在当前文件夹中执行 Main.class,它将失败:
$java src/Main
Error: Could not find or load main class src.Main
Caused by: java.lang.NoClassDefFoundError: Main (wrong name: src/Main)
$ java src.Main
Error: Could not find or load main class src.Main
Caused by: java.lang.NoClassDefFoundError: Main (wrong name: src/Main)
但如果我尝试在 src 文件夹中执行此操作,就可以了
$ cd src
src$ java Main
// it works
问题是什么?如何在任何 foler 中执行 Main.class?
尝试使用命令:
java -classpath src Main
当你发出指令时
java src/Main --> 然后 java 不仅尝试使用 src 文件夹中的 class;但它还假定包是 src.Main ;所以试图以这种方式执行它会给你一个错误;除非由 Main.java --> Main.class 定义的 class 除了在目录 src.
中之外在包 "src" 中当你 运行 java -help
时,你会得到这个输出:
Usage: java [options] <mainclass> [args...]
(to execute a class)
...
这条短信说 <mainclass>
,意思是 "the fully qualified name of the Java class, regardless of where it is saved in the file system"。
当你 运行 java src.Main
或 java src/Main
时,你告诉 java
命令 运行 class src.Main
,在 class 路径中不存在。
要解决此问题,请将 class 路径设置为 src
(因为那是 .class
文件所在的位置),然后 运行 class称为 Main
:
java -classpath src/ Main