Problem Context:个
我有一个手工创建的java"项目",它独立于任何IDE,其目录 struct 如下:
Inside Number\有一个名为IntegerFour.java的文件 在Tester中,有一个名为EncryptTest.java的文件
我已经使用Package语句将一个包分配给了IntegerFour.Java文件:
package number;
个
我已将一个包分配给www.example.com文件,并使用包语句:
package tester;
现在,在EncryptTest.java中,我已经使用以下语句导入了IntegerFour类:
import number.IntegerFour;
个
IntegerFour.java:
package number;
public class IntegerFour
{
IntegerFour(){}
}
EncryptTest.java
package tester;
import number.IntegerFour;
public class EncryptTest
{
public static void main(String args[])
{
IntegerFour userNum = new IntegerFour();
}
}
航站楼:
PS C:\Users\hunkh> cd C:\Users\hunkh\OneDrive\Desktop\project
PS C:\Users\hunkh\OneDrive\Desktop\project> javac .\source\number\IntegerFour.java
PS C:\Users\hunkh\OneDrive\Desktop\project> javac .\source\tester\EncryptTest.java
.\source\tester\EncryptTest.java:2: error: package number does not exist
import number.IntegerFour;
^
.\source\tester\EncryptTest.java:9: error: cannot find symbol
IntegerFour userNum = new IntegerFour();
^
symbol: class IntegerFour
location: class EncryptTest
.\source\tester\EncryptTest.java:9: error: cannot find symbol
IntegerFour userNum = new IntegerFour();
^
symbol: class IntegerFour
location: class EncryptTest
3 errors
PS C:\Users\hunkh\OneDrive\Desktop\project>
Problem:
现在,当我编译IntegerFour.java文件时,它可以正常编译. 当我编译EncryptTest.Java文件时,它给出以下语句错误: "程序包‘编号’不存在."
What I have tried
我已经阅读了Oracle官方的包文档,并阅读了许多堆栈溢出文章,但没有找到一个全面的指南来帮助我完全理解包是如何工作的.
与此相反,当我使用像IntelliJ这样的IDE创建一个项目,并使用IntelliJ本身创建一个包并向其中添加文件时,一切都正常工作,即使代码和目录 struct 完全相同.
问题是我想和其他人共享我的软件包,所以我想在不使用IDE的情况下手动完成这一操作,以便首先了解一切的工作原理.
此外,classes/文件夹是托管相应的. class文件(如果他们曾经被编译,那是哈哈).
我也有其他关于这个主题的问题,如:
Q1:如果包名应该是父目录路径的镜像,为什么我们不从根文件夹开始,例如C.用户...
Q2:如果我成功创建了一个软件包,我可以在任何Java文件中使用它吗?包的范围是如何工作的.