我正在尝试编译(从命令行)一个导入我自己的另一个包的 java 包。我在关注 tutorial online但是当我尝试编译最终的 java 文件 (CallPackage.java) 时似乎出现错误。
文件结构如下:
+ test_directory (contains CallPackage.java)
-> importpackage
-> subpackage (contains HelloWorld.java)
这是 CallPackage.java:
/// CallPackage.java
import importpackage.subpackage.*;
class CallPackage{
public static void main(String[] args){
HelloWorld h2=new HelloWorld();
h2.show();
}
}
这是 HelloWorld.java:
///HelloWorld.java
package importpackage.subpackage;
public class HelloWorld {
public void show(){
System.out.println("This is the function of the class HelloWorld!!");
}
}
尝试的步骤
- 进入子包,用
$javac HelloWorld.java
编译HelloWorld.java。 - 转到 test_directory 并使用
$javac CallPackage.java
编译 CallPackage.java。
这让我在最后一条命令中出错:
CallPackage.java:1: package importpackage.subpackage does not exist
import importpackage.subpackage.*;
^
CallPackage.java:4: cannot find symbol
symbol : class HelloWorld
location: class CallPackage
HelloWorld h2=new HelloWorld();
^
CallPackage.java:4: cannot find symbol
symbol : class HelloWorld
location: class CallPackage
HelloWorld h2=new HelloWorld();
^
3 errors
如何编译这两个包?非常感谢您的帮助!
最佳答案
问题是需要为每个命令(javac 和 java)设置类路径:
尝试的步骤
不是去分包,而是从顶层编译 HelloWorld.java:
$javac -cp 。 importpackage/subpackage/HelloWorld.java
以同样的方式编译CallPackage.java:
$javac -cp 。调用包.java
还使用类路径运行文件:
$java -cp 。调用包
注意:运行“$java CallPackage”会报错“Error: Could not find or load main class CallPackage”
总而言之,在每个步骤中,都必须指定类路径。这样运行后它就工作了。
关于java - 如何使用javac编译java包结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19382593/