无法从Windows命令行执行简单Java文件[重复]

djmepvbi  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(104)

此问题已在此处有答案

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>
  1. 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
k5ifujac

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。一旦你毕业到更严肃的项目,有多个源文件,特别是多个包,抛弃这个命令行javacjava的东西,使用一个构建系统,如maven或gradle。
如果出于某种奇怪的原因必须使用package语句,请像这样设置项目:

cd G:\javaPract
mkdir sample
cd sample
# put your PrivateMain.java file here
javac PrivateMain.java
cd ..
java -cp . sample.PrivateMain

关键是,文件必须在G:\javaPract\sample\PrivateMain.classG:\javaPract不是G:\javaPract\sample!)必须位于类路径上。然后运行java sample.PrivateMain
一般情况下,不要使用CLASSPATH,只需使用-cp参数指定即可。CLASSPATH是一个全局变量,一般来说,限制计算机只能运行一个Java应用程序是很奇怪的。

相关问题