Запуск Java-программы, установлен Oracle JDK [закрыто]

Я недавно установил 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

Как заставить его работать с терминала.

0
задан 26 June 2017 в 03:24

2 ответа

Скопируйте следующее в скрипт с именем 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
2
ответ дан 3 November 2019 в 01:10

Проблема, генерирующая ошибку

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 обеспечивает путь и другие детали, указанные выше. Можно вручную создать эту среду для выполнения команд (а также наличие нескольких классов и пакетов в архиве) использование команды банки.

Используя команду Jar для создания программ банки

Можно создать Ваш Привет приложение, чтобы работать, как предназначено и иметь тип пути, включенного с помощью этого метода:

Создайте путь

$ 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) а также быстрая справка путем выполнения его без аргумента.

2
ответ дан 3 November 2019 в 01:10

Другие вопросы по тегам:

Похожие вопросы: