Я могу переключаться между 2 с помощью этой команды:
# alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- * 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre/bin/java + 2 /usr/java/jdk1.8.0_91/jre/bin/java Enter to keep the current selection[+], or type selection number:
И увидеть версию с:
# java -version java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode) # javac -version javac 1.8.0_91
Теперь к моей проблеме, пожалуйста -
Я создаю простой файл Java с именем TheClassName.java:
package thepackagename; public class TheClassName { public static final void main(String[] args) { System.out.println("Hello World!"); } }
После успешной компиляции с javac TheClassName.java(который производит TheClassName.classфайл в том же каталоге) я, к сожалению, не могу запустить его:
# java -cp . thepackagename.TheClassName Error: Could not find or load main class thepackagename.TheClassName
Вот еще одна попытка:
# export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre # $JAVA_HOME/bin/java -cp . thepackagename.TheClassName Error: Could not find or load main class thepackagename.TheClassName
Установка другой переменной среды также не помогает:
# export CLASSPATH=.
Аналогичная команда в Windows 7 работает хорошо, и я попытался скопировать TheClassName.classфайл оттуда в Linux тоже.
Пожалуйста, помогите и, пожалуйста, не предлагайте помечать этот вопрос как дубликат, потому что, как вы видите выше, я уже попробовал большинство предложений.
SELINUX выключен ( SELINUX=disabled), и сервер был установлен несколько недель назад, выступая (без ошибок) в качестве LAMP с MySQL / PostgreSQL / Apache / WordPress.
ОБНОВИТЬ:
Да, мне пришлось переместить файл класса в каталог, thepackagenameи тогда он работает:
package thepackagename; public class TheClassName { public static final void main(String[] args) { System.out.println("Hello World!"); } }
Then calling it from the wrong directory results in:
Error: Could not find or load main class thepackagename.TheClassName
It must be called with its fully-qualified name:
java -classpath . thepackagename.TheClassName
And this command must be called from the same directory in which the thepackagename directory exists. This means you have to create a new directory called thepackagename and move TheClassName.class into it, then run the above command from the parent directory of the thepackagename directory.
О, вы на 100% правы, и перемещение файла в `thepackagename / TheClassName.class` помогает (и, вероятно, делает мой вопрос дубликатом) ... Однако [моя настоящая программа] (https://github.com/afarber/ jetty-newbie / tree / master / WebsocketHandler), состоящий из нескольких jar-файлов, все еще не запускается. Я должен исследовать больше и задам отдельный вопрос.
Alexander Farber 8 лет назад
0
Чтобы запустить файлы Java с внешним jar-файлом, запустите `java -cp.: / Path / to / jar / file MyCompiledFile`, где вы замените` / path / to / jar / file` на полный путь к вашему внешнему .jar-файлу.
karel 8 лет назад
1