此问题已在此处有答案:
How do I run a Java class in a package?(5个答案)
3天前关闭。
无法从windows命令行执行此代码
1.我把代码写成:
package sample;
public class PrivateMain{
public static void main(String[] args){
System.out.println("This is from main");
}
}
1.我已经使用下面的命令设置了类路径,但仍然收到错误“无法找到或加载主类”。我错过了任何步骤吗?
G:\javaPract>javac PrivateMain.java
G:\javaPract>java PrivateMain
Error: Could not find or load main class PrivateMain
G:\javaPract>java sample.PrivateMain
Error: Could not find or load main class sample.PrivateMain
G:\javaPract>set CLASSPATH=%CLASSPATH%;.
G:\javaPract>echo %CLASSPATH%
G:\javaPract;.
G:\javaPract>javac PrivateMain.java
G:\javaPract>java PrivateMain
Error: Could not find or load main class PrivateMain
G:\javaPract>java sample.PrivateMain
Error: Could not find or load main class sample.PrivateMain
G:\javaPract>
- G:\javaPract目录中的文件内容:
G:\javaPract>dir
Volume in drive G is Learning
Volume Serial Number is 008F-C257
Directory of G:\javaPract
03/21/2023 08:04 AM <DIR> .
03/21/2023 08:04 AM <DIR> ..
05/17/2023 04:35 PM 280 PrivateMain.java
05/17/2023 04:36 PM 688 PrivateMain.class
1条答案
按热度按时间k5ifujac1#
java PrivateMain
不工作那是因为你的课不叫那个它被称为
sample.PrivateMain
。如果你在“我将给予你我的类的名字”模式下使用java
(即不通过-jar
或-jmod
启动选项),则必须**完全合格。java sample.PrivateMain
不工作类名通过将点变成斜线并追加
.class
而变成路径。换句话说,如果你运行java sample.PrivateMain
,java启动,并通过将sample/PrivateMain.class
追加到它来检查类路径中的每个目录。这不会找到你的类,因为你的类不在sample/PrivateMain中--它在./PrivateMain中,Java根本不会在那里查找。如何修复
对于像这样的一次性项目,去掉
package
声明。当你在做这个的时候,你可以运行java MyMain.java
--不需要涉及javac
。一旦你毕业到更严肃的项目,有多个源文件,特别是多个包,抛弃这个命令行javac
和java
的东西,使用一个构建系统,如maven或gradle。如果出于某种奇怪的原因必须使用package语句,请像这样设置项目:
关键是,文件必须在
G:\javaPract\sample\PrivateMain.class
和G:\javaPract
(不是G:\javaPract\sample
!)必须位于类路径上。然后运行java sample.PrivateMain
。一般情况下,不要使用
CLASSPATH
,只需使用-cp
参数指定即可。CLASSPATH
是一个全局变量,一般来说,限制计算机只能运行一个Java应用程序是很奇怪的。