gpt4 book ai didi

java - 无法编译和执行java程序

转载 作者:行者123 更新时间:2023-11-29 04:34:11 25 4
gpt4 key购买 nike

我有以下简化的文件结构:

C:/red/green/black/yellow/white/pink.我现在在“黑色”文件夹中的 cmd 中。

Hello.java文件中有package yellow.white.pink。在“粉红色”文件夹中有一个 Hello.java 源文件。

首先我尝试编译文件:

javac -类路径。 -encoding ISO-8859-1 yellow.white.pink.Hello.java

javac -cp 。 -encoding ISO-8859-1 yellow.white.pink.Hello.java

这两个给我一个错误:

找不到文件 yellow.white.pink.Hello.java

那我试试

javac -encoding ISO-8859-1 C:/red/green/black/yellow/white/pink/Hello.java

它编译得很好。

为了运行它,我这样做

java -类路径。黄色.白色.粉色.你好它运行得很好。但在这种情况下

java C:/red/green/black/yellow/white/pink/Hello.class

不起作用 - 给出 Could not find or load main class 错误。

这是为什么呢?为什么我不能在根文件夹中编译 .java 文件并提供完整的包名称,它只适用于源的整个路径,而执行程序则相反?

最佳答案

java 命令将类的完全限定名作为参数(包名加上类名)。

在这两种情况下,完全限定名称都必须是 yellow.white.pink.Hello 并且不应更改。

然而,在你的第二次运行中,你传递了 C:/red/green/black/yellow/white/pink/Hello.class 这是编译文件的路径,但不是类。

这两次运行的不同之处还在于 classpass 声明。在第一次运行时,它是当前目录的路径(可以作为 . 传递)。在第二次运行中,它根本没有指定。 Java 将其视为当前目录路径。

要使第二个示例正常工作,您必须指定 classpath 以及类名。

java -classpath C:/red/green/black yellow.white.pink.Hello

关于java - 无法编译和执行java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42460045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com