как скомпилировать структуры пакетов java с помощью javac
цель
Я пытаюсь скомпилировать (из командной строки) пакет java, который импортирует другой собственный пакет.
предыдущей работы
я следовал учебник онлайн, расположенный по адресу:http://www.roseindia.net/java/master-java/createsubpackage.shtml
но кажется, что я получаю ошибку, когда пытаюсь скомпилировать окончательный файл java (CallPackage.ява.)
Структура Файла пример
вот структура файла:
+test_directory (contains CallPackage.java)
-> importpackage
-> subpackage (contains HelloWorld.java)
код
вот CallPackage.java
/// CallPackage.java
import importpackage.subpackage.*;
class CallPackage{
public static void main(String[] args){
HelloWorld h2=new HelloWorld();
h2.show();
}
}
и вот это.java
///HelloWorld.java
package importpackage.subpackage;
public class HelloWorld {
public void show(){
System.out.println("This is the function of the class HelloWorld!!");
}
}
Покушение На Действия
-
перейдите в подпакет и скомпилируйте HelloWorld.java
$javac и типа HelloWorld.java
-
перейдите в test_directory и скомпилируйте CallPackage.java
$javac CallPackage.java
Ошибка Компилятора
но я получаю ошибку на последнем cmd:
CallPackage.java:1: package importpackage.subpackage does not exist
import importpackage.subpackage.*;
^
CallPackage.java:4: cannot find symbol
symbol : class HelloWorld
location: class CallPackage
HelloWorld h2=new HelloWorld();
^
CallPackage.java:4: cannot find symbol
symbol : class HelloWorld
location: class CallPackage
HelloWorld h2=new HelloWorld();
^
3 errors
большое спасибо за любую помощь!
Петр
4 ответов
вы уверены, что importpackage / subpackage находится в вашем пути к классам?
- CP путь или-classpath путь
укажите, где найти файлы классов пользователей и (необязательно) процессоры аннотаций и исходные файлы. Этот путь к классу переопределяет путь к классу пользователя в переменной среды CLASSPATH. Если не указан ни CLASSPATH, ни-CP, ни-classpath, путь к классу пользователя состоит из текущего каталога. Дополнительные сведения см. В разделе Настройка пути к классу.
Если -sourcepath опция не определяется, пользователь, путь Class также ищется исходные файлы.
Если -processorpath опция не определяется, путь к классу также ищется процессоры аннотации.
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html
проблема заключалась в том, что путь к классу должен быть установлен для каждой команды (javac и java):
Попытка Шагов
-
собираюсь подпакет, скомпилировать файл HelloWorld.Java из top_level:
$javac -cp . importpackage/subpackage/HelloWorld.java
-
скомпилировать CallPackage.java таким же образом:
$javac -cp . CallPackage.java
-
запустите файл, используя путь к классу также:
$java -cp . CallPackage
Примечание: запуск " $java CallPackage "даст ошибку"Ошибка: не удалось найти или загрузить основной класс CallPackage"
таким образом, на каждом шаге должен быть указан путь к классу. Он работал после запуска его как такового.
(1)Сначала скомпилируйте код
javac-d importpackage.субпакет.Файл HelloWorld
(2), а затем скомпилируйте CallPackage.java
javac CallPackage.java
та же ситуация для меня. И я пришел, чтобы взять его на себя, составляя классы в то же время.
Например, вот мой проект:
+ beerV1
-> classes
-> src
-> com
-> example
-> model
-> BeerExpert.java
-> web
-> BeerSelect.java
BeerExpert.java:
package com.example.model;
import ...
public class BeerExpert{
...
}
BeerSelect.java:
package com.example.web;
import com.example.model.*;
import ...
public class BeerSelect {
...
}
Как видите: BeerSelect.java пытается импортировать классы com.образец.модель пакета.
В первый раз я собрал BeerExert.java сначала команда:
--> javac -d classes src/com/example/model/BeerExpert.java
затем:
--> javac -d classes src/com/example/web/BeerSelect.java
и результат был:
-->... error: package com.example.model does not exist
Итак, я знал, что компиляция нескольких классов отдельно не будет работать в этом случае.
После страданий в google я нашел этот очень простой способ решить проблему:
просто скомпилируйте все сразу:
--> javac -d classes src/com/example/model/BeerExpert.java src/com/example/web/BeerSelect.java
наконец, вот что я получил:
+ beerV1
-> classes
-> com
-> example
-> model
-> BeerExpert.class
-> web
-> BeerSelect.class
-> src
-> com
-> example
-> model
-> BeerExpert.java
-> web
-> BeerSelect.java
надеюсь, что помогает.