Я недавно установил Oracle JDK, установить переменные среды. Все нормально работает.
java -версия
на терминале
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
У меня есть простая программа Hello.java
, которую я хочу запустить на терминале.
package com.company;
public class Hello {
public static void main(String[] args) {
System.out.println("hello, world");
}
}
Я компилирую и получаю файл Hello.class
в ... / out /.../ com / company / ..
Работает нормально в моей среде IDE, но В конце концов мне придется запустить терминал формы. cd-ed в каталог Hello.class.
java Hello
дает следующее сообщение об ошибке.
Error: Could not find or load main class Hello
Как заставить его работать с терминала.
Скопируйте следующее в скрипт с именем Hello.java:
package com.company;
public class Hello {
public static void main(String[] args) {
System.out.println("hello, world");
}
}
Опция -d
в следующей команде создает соответствующую иерархию каталогов. Скомпилируйте вашу Java-программу с помощью: javac -d . Hello.java
, затем запустите ее с:
java com.company.Hello
Проблема, генерирующая ошибку
Java ищет Ваше приложение в пути, указанном Вашим package
директива. В этом случае com.company
.
Можно скомпилировать ту простую программу путем комментирования директивы пакета, скомпилировать его без пакета, или создать путь и назвать ее полным путем.
$ mkdir -p com/company
$ mv Hello.class com/company/
$ java com/company/hello
hello, world
Если Вы удаляете строку package com.company;
путем комментария этого это будет работать, поскольку Вы уже попробовали и ожидаете.
Если у Вас есть крупный проект с несколькими папками для Ваших файлов класса, можно использовать программу менеджера по банке или банку версии командной строки для создания файла Hello.jar.
Ваш IDE обеспечивает путь и другие детали, указанные выше. Можно вручную создать эту среду для выполнения команд (а также наличие нескольких классов и пакетов в архиве) использование команды банки.
Можно создать Ваш Привет приложение, чтобы работать, как предназначено и иметь тип пути, включенного с помощью этого метода:
Создайте путь
$ mkdir -p com/company
Поместите свои файлы класса в путь строки пакета:
$ mv Hello.class com/company
Создайте файл манифеста для указания main class
местоположение
manifest.txt:
Manifest-Version: 1.0
Main-Class: com.company.Hello
Выполните команду банки для создания пакета
Банка $ подтверждает test.jar manifest.txt com/
Вам теперь создадут новый файл, названный test.jar. Второй аргумент, возможно, назвали чем-либо включая Hello.jar или просто привет. Новый файл может быть выполнен различными способами:
$ java -jar test.jar
$ ./test.jar
Если Вы создали файл банки со вторым аргументом тем, чтобы быть hello
, Вы могли выполнить его с:
$ ./hello
Вы могли также переименовать java.jar файл к любому имени после того, как оно создается и выполняет его тем именем.
Выполнение класса Java очень строго в этом, оно должно быть выполнено именем класса, которым оно было скомпилировано.
Для выполнения файла банки как команды без "-банка" аргумент, необходимо было бы изменить бит полномочий (chmod +x Hello.jar
).
Детали команды банки
Аргументы банки в этом примере:
-c Create a new archive -f Specify the archive (jar filename) -m Include manifest information from the specified manifest file
Банка установлена вперед как часть пакета JDK. Можно получить больше деталей использования из страниц справочника (man jar
) а также быстрая справка путем выполнения его без аргумента.