2016-07-02 8 views
0

У меня есть программа, в которой я изучал и опробовал шаблон наблюдения.Как мне организовать проекты во время работы без IDE?

Я написал это с нано на моем терминале, и я сохранил его как это:

kneipe 
    (location 
     (Show.java)) 
    (leute 
     (Beobachter.java 
     Comedian.java)) 

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

Вот сделка:
Я попробовал его на затмении, и она отлично работает с import package2.*;

И все учебники, которые я нашел в Интернете или даже в книгах только с одним пакетом-папке.

Итак, как мне организовать проект и как правильно импортировать, потому что я почти все (и ничего не работал) (я даже пытался копировать второй пакет в первый, который тоже не работал).

ClassA:

package leute; 

import java.util.*; 

public class Comedian extends Observable { 
    String name = ""; 
    int numGags = 0; 
    String joke = "abc"; 
    boolean toldjoke = false; 

    public Comedian(String name, int numGags) { 
     this.name = name; 
     this.numGags = numGags; 
    } 

    public void telljoke() { 
     this.toldjoke = true; 
     System.out.println(joke); 
     setChanged(); 
     notifyObservers(); 
    } 

    private String getname() { 
     return this.name; 
    } 

    private int getnumgags() { 
     return this.numGags; 
    } 
    } 

То ClassB:

package leute; 

import java.util.*; 

public class Besucher implements Observer { 
    String name = ""; 
    int intus = 0; 
    boolean lacht = false; 

    public Besucher(String name, int intus) { 
     this.name = name; 
     this.intus = intus; 
    } 

    private String getname() { 
     return this.name; 
    } 

    public void enought(Besucher a) { 
     a.lacht = false; 
    } 

    public void update(Observable o, Object arg) { 
     lacht = true; 
     System.out.println("HAHAHAH!!!"); 
    } 
} 

Thats Главное:

package location; 

import leute.*; 
import java.util.*; 

public class Show { 

    public static void main(String args[]) { 
     Observer franz = new Besucher("Franz", 6); 
     Observer karl = new Besucher("Karl", 1); 
     Comedian mark = new Comedian("Mark", 5); 

     mark.addObserver(franz); 

     mark.telljoke(); 


     mark.addObserver(karl); 

     mark.telljoke(); 

     mark.deleteObserver(karl); 
     mark.deleteObserver(franz); 

     mark.telljoke(); 
    } 
} 

Как уже упоминалось, что прекрасно работает на затмении, но терминал говорит мне это:

[email protected] ~/Schreibtisch/Alle Projekte $ javac 
    kneipe/location/Show.java 
kneipe/location/Show.java:3: error: package leute does not exist 
import leute.Besucher; 
      ^
kneipe/location/Show.java:4: error: package leute does not exist 
import leute.Comedian; 
      ^
kneipe/location/Show.java:10: error: cannot find symbol 
     Observer franz = new Besucher("Franz", 6); 
          ^
    symbol: class Besucher 
    location: class Show 
kneipe/location/Show.java:11: error: cannot find symbol 
     Observer karl = new Besucher("Karl", 1); 
          ^
    symbol: class Besucher 
    location: class Show 
kneipe/location/Show.java:12: error: cannot find symbol 
     Comedian mark = new Comedian("Mark", 5); 
     ^
    symbol: class Comedian 
    location: class Show 
kneipe/location/Show.java:12: error: cannot find symbol 
     Comedian mark = new Comedian("Mark", 5); 
          ^
    symbol: class Comedian 
    location: class Show 
6 errors 
+0

Вы должны сообщить нам **, что ** говорит вам **, точное сообщение **. Не перефразируй это. Отправьте точное и полное сообщение и соответствующий код, на который он ссылается. –

+0

Укажите код, особенно линию пакета и определение класса. Более того, точное сообщение об ошибке было бы полезно. – Matt

ответ

1

Вам необходимо скомпилировать все исходные файлы за один раз. Или, по крайней мере, указать путь к классам, так что компилятор знает, где найти классы, которые Показать зависит от:

javac -cp kneipe kneipe/location/Show.java 

По умолчанию текущий каталог находится в пути к классам, так что вы можете перейти в каталог keipe, и вобще

javac location/Show.java 

я настоятельно рекомендую всегда использовать опцию -d, чтобы указать, где компилятор должен поместить файлы .class, в отдельной директории из исходных файлов.

И на самом деле, как только вы привыкнете к тому, как работает Java, вам лучше использовать реальный инструмент построения, такой как gradle или Maven (но я предпочитаю gradle), что позволит вам принять хорошие соглашения о компоновке и скомпилировать , банку и т. д.все для вас, с одной командой.

0

Вы должны указать файл в соответствии с классом.

ClassB.java должно быть Besucher.java например.

Если он работает в затмении, проблема в том, как вы компилируете.

Вот как я бы это сделать:

javac **/*.java 
0

Вы не указали путь к классам.

javac -cp kneipe kneipe/location/Show.java 

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

  • Нет связанных вопросов^_^