包导入/编译不工作



我正在尝试编译一个小项目。它由两个类组成,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语句。

你只需要从不同的包中导入类。因此,当FractionMain在同一个包中时;然后删除那些import语句;你应该表现得很好!

如果两个类都在同一个包中,那么您不需要导入任何东西,只需为另一个类创建一个对象。只有当要从另一个包访问类时,才必须导入它们。

我对java也完全陌生,但我最初的猜测是,你不必像你说的那样显式地导入类,因为它们属于同一个包。所以只要移除import Fraction;

最新更新