无法在简单的 java 项目中找到或加载 main class
Could not find or load main class in a simple java project
我创建了一个简单的 java 项目“DesignPatterns”。
我创建了一个文件 FacadePattern.java,路径为 ~/DesignPatterns/Structural/FacadePattern/FacadePattern.java
我的FacadePattern.java
class,
public class FacadePattern {
public static void main(String args[]) {
// Some code
}
}
但是我的编辑器 (VSCode) 在文件开头给我一个错误:
The declared package "" does not match the expected package "Structural.DecoratorPattern"
所以点击快速修复后,它在第一行添加了package Structural.FacadePattern;
。
所以最后的代码变成了
package Structural.FacadePattern;
public class FacadePattern {
public static void main(String args[]) {
// Some code
}
}
但是当我使用命令编译上面的文件时
javac FacadePattern.java && java FacadePattern
它给我以下错误:
Error: Could not find or load main class FacadePattern
Caused by: java.lang.NoClassDefFoundError: Structural/FacadePattern/FacadePattern (wrong name: FacadePattern)
在网上搜索了很多之后,我运行下面的命令:
javac -sourcefile ~/DesignPatterns FacadePattern.java && java FacadePattern
但是没有用,我得到了同样的错误。
谁能解释一下为什么我的编辑器报错但之前代码 运行 成功了?以及为什么在添加“package Structural.FacadePattern;”后它无法编译?线? javac 命令中的 -sourcefile 参数是什么?以及如何 运行 在编辑器和终端中成功无误地编写代码?
坚持命名规则。包名只能是小写。在你的情况下,它应该是 package structural.facadepattern;
运行'correct'class。因为你的 class 不在 'the base folder' 里面,也就是 'default package',你必须在 class 前面加上它的包名:java Structural.FacadePattern.FacadePattern
或者 java structural.facadepattern.FacadePattern
如果您使用正确的包裹大小写。
我创建了一个简单的 java 项目“DesignPatterns”。
我创建了一个文件 FacadePattern.java,路径为 ~/DesignPatterns/Structural/FacadePattern/FacadePattern.java
我的FacadePattern.java
class,
public class FacadePattern {
public static void main(String args[]) {
// Some code
}
}
但是我的编辑器 (VSCode) 在文件开头给我一个错误:
The declared package "" does not match the expected package "Structural.DecoratorPattern"
所以点击快速修复后,它在第一行添加了package Structural.FacadePattern;
。
所以最后的代码变成了
package Structural.FacadePattern;
public class FacadePattern {
public static void main(String args[]) {
// Some code
}
}
但是当我使用命令编译上面的文件时
javac FacadePattern.java && java FacadePattern
它给我以下错误:
Error: Could not find or load main class FacadePattern
Caused by: java.lang.NoClassDefFoundError: Structural/FacadePattern/FacadePattern (wrong name: FacadePattern)
在网上搜索了很多之后,我运行下面的命令:
javac -sourcefile ~/DesignPatterns FacadePattern.java && java FacadePattern
但是没有用,我得到了同样的错误。
谁能解释一下为什么我的编辑器报错但之前代码 运行 成功了?以及为什么在添加“package Structural.FacadePattern;”后它无法编译?线? javac 命令中的 -sourcefile 参数是什么?以及如何 运行 在编辑器和终端中成功无误地编写代码?
坚持命名规则。包名只能是小写。在你的情况下,它应该是
package structural.facadepattern;
运行'correct'class。因为你的 class 不在 'the base folder' 里面,也就是 'default package',你必须在 class 前面加上它的包名:
java Structural.FacadePattern.FacadePattern
或者java structural.facadepattern.FacadePattern
如果您使用正确的包裹大小写。