2016-09-06 4 views
1

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

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

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

+0

'Fraction' - это неточное * полное имя класса. Изучите, что такое «полное имя», тогда вы понимаете проблему и знаете решение. – Tom

+0

Если классы находятся в пакете, они должны иметь декларацию пакета. –

+2

Это не имеет никакого отношения к пакетам. У вас синтаксическая ошибка отсутствует. и. Если вы действительно не публикуете фактический код, никто не может сказать вам, что такое ошибка. – bmargulies

ответ

0

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

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

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

+0

Нет, это дает 'Main.java:5: не могу найти символ – mgtheater

+0

Извините, это была еще одна ошибка. – mgtheater

0

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

0

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

+0

Невозможно найти символ, возможно, что-то сделать в классе фракций. Можете ли вы опубликовать исходный код для нас? –

+0

Это была другая ошибка с конструктором, не имевшая ничего общего с пакетами. – mgtheater

+0

Да, вот что я имел в виду. Зачем меня голодать? –

Смежные вопросы