首页 > 解决方案 > How to excute java.class in any folder?

问题描述

This is my folder:

$ tree
.

├── src
│   ├── Main.class
│   ├── Main.java
│   └── xyz
│       └── bitfish
│           ├── Fish.class
│           └── Fish.java

if I try to excute Main.class in current folder, it will fail:

$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)

But if I try to do this in src folder, it will be fine

$ cd src
src$ java Main
// it works

What is the problem? How to excute Main.class in any foler?

标签: javajavac

解决方案


尝试使用命令:

java -classpath src 主目录

当你发出命令时

java src/Main --> 那么java不仅尝试使用src文件夹中的类;但它也假设包是 src.Main ;所以试图以这种方式执行它会给你一个错误;除非 Main.java 定义的类 --> Main.class 除了在目录 src 中之外,还在包“src”中。


推荐阅读