从命令行执行包的 java 程序时出错
Getting error while executing java programs of packages from command line
我正在从命令行执行程序并在其中使用程序包。
我的程序文件名是 TestA.java 和 TestB.java.
我最初执行了以下
javac TestA.java
以上没有问题,它也生成了 class 文件
对于以下我正在观察这个问题
javac TestB.java
输出:
TestB.java:2: error: '.' expected
import TestA;
^
TestB.java:2: error: ';' expected
import TestA;
^
2 errors
并且 TestA.java 文件是
package a.b;
class TestA {
public static void methodPublic(){
methodPrivate();
}
protected static void methodProtected(){
methodPrivate();
}
static void methodDefault(){
methodPrivate();
}
private static void methodPrivate(){}
}
TestB.java 内容是:
package a.b;
import TestA;
public class TestB {
public static void main(String args[]) {
TestA.methodPublic();
TestA.methodProtected();
TestA.methodDefault();
}
public static void methodPublic() {
}
protected static void methodProtected() {
}
static void methodDefault() {
}
private static void methodPrivate() {
}
}
我正在通过导航到这两个文件所在的 b 文件夹来执行 javac。
I'm executing the javac by navigating to b folder where these two files exist.
你不想那样做;每个 class 包含 包的完全限定 class 名称。它们形成一棵树。很像你的文件系统。从 b
文件夹向上移动两个目录(到包含 a
的文件夹 - 例如 Windows 上的 cd ../..
或 cd ..\..
。那么
javac -cp . a/b/TestA.java a/b/TestB.java
此外,您通常希望将其写入 "binary" 输出文件夹。所以
javac -cp . -d bin a/b/TestA.java a/b/TestB.java
最后,您不需要 import TestA
,因为它与 TestB
在同一个包中。但是,如果您想要,您需要
import a.b.TestA;
我正在从命令行执行程序并在其中使用程序包。 我的程序文件名是 TestA.java 和 TestB.java.
我最初执行了以下 javac TestA.java
以上没有问题,它也生成了 class 文件 对于以下我正在观察这个问题 javac TestB.java
输出:
TestB.java:2: error: '.' expected
import TestA;
^
TestB.java:2: error: ';' expected
import TestA;
^
2 errors
并且 TestA.java 文件是
package a.b;
class TestA {
public static void methodPublic(){
methodPrivate();
}
protected static void methodProtected(){
methodPrivate();
}
static void methodDefault(){
methodPrivate();
}
private static void methodPrivate(){}
}
TestB.java 内容是:
package a.b;
import TestA;
public class TestB {
public static void main(String args[]) {
TestA.methodPublic();
TestA.methodProtected();
TestA.methodDefault();
}
public static void methodPublic() {
}
protected static void methodProtected() {
}
static void methodDefault() {
}
private static void methodPrivate() {
}
}
我正在通过导航到这两个文件所在的 b 文件夹来执行 javac。
I'm executing the javac by navigating to b folder where these two files exist.
你不想那样做;每个 class 包含 包的完全限定 class 名称。它们形成一棵树。很像你的文件系统。从 b
文件夹向上移动两个目录(到包含 a
的文件夹 - 例如 Windows 上的 cd ../..
或 cd ..\..
。那么
javac -cp . a/b/TestA.java a/b/TestB.java
此外,您通常希望将其写入 "binary" 输出文件夹。所以
javac -cp . -d bin a/b/TestA.java a/b/TestB.java
最后,您不需要 import TestA
,因为它与 TestB
在同一个包中。但是,如果您想要,您需要
import a.b.TestA;