我正在尝试编译一个小项目。它由两个类组成,Fraction.java
表示一个数学分数并提供一些简单的计算方法,Main.java
包含生成两个分数并进行一些计算的主要方法。项目结构如下:
MyFractionProject
|
+-------src
|
+------fractionpackage
|
+-------Fraction.java
+-------Main.java
既然两个类都在同一个包中,我不需要添加包声明,对吗?我所要做的就是将Fraction.java
导入Main.java
,例如:
import Fraction;
public class Main {
public static void main(String[] args) {
Fraction f1 = new Fraction(...)
...
然而这不起作用。当我尝试从MyFractionProject/src/fractionpackage
编译两个类时,分数类编译得很好,但javac Main.java
给了我这个错误:
localhost:fractionpackage MyUserName$ javac Fraction.java
localhost:fractionpackage MyUserName$ javac Main.java
Main.java:1: '.' expected
import Fraction;
^
Main.java:1: ';' expected
import Fraction;
^
2 errors
我知道这是一个常见的初学者问题,但我还没有真正找到一个简明的解释,说明从哪个工作目录到哪个类文件夹,哪些类必须按照什么顺序从哪个包编译。通常应答者只是在目录或类路径中乱跳,这对初学者根本没有帮助。
我以为我已经选择了最基本的设置,但即使这样也不能工作,这真的很令人沮丧。有人可以看看它,并给我具体的说明(与各自的工作目录),将使这个项目运行?
不要在包中导入其他类:如果有C1, C2,…Cn在你的包p;然后所有这些C1…可以相互使用而不需要任何import语句。
你只需要从不同的包中导入类。因此,当Fraction与Main在同一个包中时;然后删除那些import语句;你应该表现得很好!
如果两个类都在同一个包中,那么您不需要导入任何东西,只需为另一个类创建一个对象。只有当要从另一个包访问类时,才必须导入它们。
我对java也完全陌生,但我最初的猜测是,你不必像你说的那样显式地导入类,因为它们属于同一个包。所以只要移除import Fraction;