Пытаюсь скомпилировать небольшой проект. Он состоит из двух классов: 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

Я знаю, что это частый вопрос новичков, но я действительно не нашел краткого объяснения того, какие классы, из каких пакетов должны быть скомпилированы, в каком порядке, из какого рабочего каталога в какую папку классов. Часто респонденты просто дико прыгают по каталогу или по пути к классу, что совершенно бесполезно для новичков.

Я думал, что выбрал самую простую возможную настройку, и даже то, что она не работает, действительно расстраивает. Может ли кто-нибудь просмотреть его и дать мне конкретные инструкции (с соответствующими рабочими каталогами), которые позволят запустить этот проект?

1
mgtheater 6 Сен 2016 в 17:24

3 ответа

Лучший ответ

Вы не импортируете другие классы в свой пакет: если у вас есть классы C1, C2, ... Cn в вашем пакете p; тогда все эти C1, ... могут использовать друг друга без каких-либо операторов импорта.

Вам нужно только импортировать классы из разных пакетов.

Таким образом, когда Fraction находится в том же пакете, что и Main ; затем просто удалите эти операторы импорта; и тебе должно быть хорошо!

0
GhostCat 6 Сен 2016 в 14:28

Я тоже совершенно новичок в java, но я предполагаю, что вам не нужно явно импортировать класс, поскольку вы сказали, что они принадлежат к одному пакету. Так что просто удалите эту импортную фракцию;

0
oli-chowdhury 6 Сен 2016 в 14:33

Если оба класса находятся в одном пакете, вам не нужно ничего импортировать, просто создайте объект для другого класса. Классы необходимо импортировать только тогда, когда к ним нужно получить доступ из другого пакета.

0
dharan 6 Сен 2016 в 14:32