无法编译和执行 java 程序
Can't compile and execute java program
我有以下简化的文件结构:
C:/red/green/black/yellow/white/pink
。我现在在文件夹 'black'.
中的 cmd 中
Hello.java
文件中有 package yellow.white.pink
。在文件夹 'pink' 中有一个 Hello.java
源文件。
首先我尝试编译文件:
javac -classpath . -encoding ISO-8859-1 yellow.white.pink.Hello.java
javac -cp . -encoding ISO-8859-1 yellow.white.pink.Hello.java
这两个给我报错:
File not found yellow.white.pink.Hello.java
.
那我试试
javac -encoding ISO-8859-1 C:/red/green/black/yellow/white/pink/Hello.java
它编译得很好。
我做运行
java -classpath . yellow.white.pink.Hello
而且 运行 很好。
但在这种情况下
java C:/red/green/black/yellow/white/pink/Hello.class
不起作用 - 出现 Could not find or load main class
错误。
这是为什么?为什么我不能在根文件夹中编译 .java 文件并给出完整的包名称,它只适用于源的整个路径,而执行程序则相反?
java
命令将 class 的完全限定名称作为参数(包名称加上 class 名称)。
在这两种情况下,完全限定名称都必须是 yellow.white.pink.Hello
,并且不应更改。
但是在你的第二个 运行 中你传递了 C:/red/green/black/yellow/white/pink/Hello.class
这是编译文件的路径但不是 class.
的完全限定名称
这两个 运行 的不同之处还在于 classpass
声明。在第一个 运行 中,它是当前目录的路径(可以作为 .
传递)。在第二个 运行 中根本没有指定。 Java 将此视为当前目录路径。
要使第二个示例工作,您必须指定 classpath
以及 class 名称。
java -classpath C:/red/green/black yellow.white.pink.Hello
我有以下简化的文件结构:
C:/red/green/black/yellow/white/pink
。我现在在文件夹 'black'.
Hello.java
文件中有 package yellow.white.pink
。在文件夹 'pink' 中有一个 Hello.java
源文件。
首先我尝试编译文件:
javac -classpath . -encoding ISO-8859-1 yellow.white.pink.Hello.java
javac -cp . -encoding ISO-8859-1 yellow.white.pink.Hello.java
这两个给我报错:
File not found yellow.white.pink.Hello.java
.
那我试试
javac -encoding ISO-8859-1 C:/red/green/black/yellow/white/pink/Hello.java
它编译得很好。
我做运行
java -classpath . yellow.white.pink.Hello
而且 运行 很好。
但在这种情况下
java C:/red/green/black/yellow/white/pink/Hello.class
不起作用 - 出现 Could not find or load main class
错误。
这是为什么?为什么我不能在根文件夹中编译 .java 文件并给出完整的包名称,它只适用于源的整个路径,而执行程序则相反?
java
命令将 class 的完全限定名称作为参数(包名称加上 class 名称)。
在这两种情况下,完全限定名称都必须是 yellow.white.pink.Hello
,并且不应更改。
但是在你的第二个 运行 中你传递了 C:/red/green/black/yellow/white/pink/Hello.class
这是编译文件的路径但不是 class.
这两个 运行 的不同之处还在于 classpass
声明。在第一个 运行 中,它是当前目录的路径(可以作为 .
传递)。在第二个 运行 中根本没有指定。 Java 将此视为当前目录路径。
要使第二个示例工作,您必须指定 classpath
以及 class 名称。
java -classpath C:/red/green/black yellow.white.pink.Hello