2010-01-29 3 views
1

Как скомпилировать и запустить следующие программы:компиляции и запуска Java программы

Test1.java:

package A; 

public class Test1 
{ 
    public int a = 1; 
} 

Test2.java:

package B; 

import A.*; 

public class Test2 
{ 
    public static void main(String [] args) 
    { 
     Test1 obj = new Test1(); 
     System.out.println(obj.a); 
    } 
} 

Я новичок пакеты. Если я скомпилирую с помощью javac *.java и вручную создам каталог A, скопируйте Test1.class в него и вручную создайте каталог B и скопируйте Test2.class в него, а затем запустите java B.Test2. Я уверен, что это неправильный способ сделать это. Пожалуйста, предложите.

+0

Некоторые предложили использование IDE, но я пытаюсь понять, что именно происходит под капотом. Некоторые упомянули Ant/Maven. В чем разница? Я знаю, как делаются работы. Я думаю, они похожи. С чего начать, Ant или Maven? – gameover

ответ

2

Вы должны держать свои Java-файлы в правильной структуре каталогов:

A/Test1.java 
B/Test2.java 

Это, как правило, достаточно, чтобы вызывать только javac на основной класс, как все зависимости будут обрабатываться автоматически. После того, как я говорю javac B/Test2.java, это выглядит следующим образом:

A/Test1.class 
A/Test1.java 
B/Test2.class 
B/Test2.java 

И я могу запустить программу с java B.Test2.

Если вам не достаточно просто запустить javac на ваш основной класс, вам, вероятно, понадобится система сборки.

+0

+1 Спасибо за эту ясную иллюстрацию :) – gameover

2

вы должны держать ваши .java файлов в структуре каталогов соответствия структуры пакета

так Test1.java должен идти в директории так Test2.java должен идти в каталоге B

+0

Спасибо за объекты, это работает :) Но теперь мне нужно использовать javac дважды !! Есть ли способ выпустить одну команду javac? – gameover

+1

после того, как вы начнете создавать приложения, которые являются> 1 классом, вам лучше использовать что-то вроде ant или maven для компиляции. вы также можете перечислить многие файлы для компиляции, например. java A/*. java B/*. java Или вы можете просто скомпилировать Test2.java и Test1 будет скомпилирован (если еще не), поскольку он используется Test2 – objects

+0

«вам лучше использовать что-то вроде ant или maven для компиляции ». Или IDE, например Eclipse или Netbeans. Они также значительно упрощают кодирование. – Thilo

0

компилятор будет создавать каталоги называемые A и B, и поместите в них файлы .class.

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

2

Нет ничего плохого в том, как вы компилируете, это просто громоздко, но, конечно, не так.

При этом создайте каталог src для хранения ваших .java-файлов, сохраняя структуру каталогов связью с структурой пакета ваших классов. В этом случае вы должны иметь каталог Src и внутри него, каталог A и B. каталог внутри поместить Test1.java и внутри В положил Test2.java

Тогда:

javac B/Test2.java 

Почему Test2.java? Поскольку это зависит от A, тогда компилятор достаточно умен, чтобы сначала скомпилировать A/Test1.java, а затем B/Test2.java. На этом этапе вы должны каждый .class файлы внутри А и В

Чтобы запустить его:

java B.Test2 
+0

+1 Спасибо за эту ясную иллюстрацию :) – gameover

0

Это не является прямым ответом на ваш вопрос, но вы можете начать думать об использовании IDE (другие предложили муравья). Я бы порекомендовал jcreator, если вы только начинаете или Eclipse, если хотите что-то хорошее.

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