создание 100% автономного исполняемого файла jar, для которого не требуется команда java - PullRequest
3 голосов
/ 17 июля 2011

так что, очевидно, если вы создаете исполняемый jar-файл, для его запуска вам по-прежнему нужна команда java:

java -jar something.jar

, но что, если я просто хочу, чтобы он запускался без команды java, поэтому просто напрямуюиз командной строки

something.jar 

есть ли способ экспортировать мое Java-приложение в Eclipse, чтобы выполнить такое

Ответы [ 5 ]

3 голосов
/ 17 июля 2011

В системах Unix вы можете добавить файл jar в конце исполняемого скрипта.

В Windows вы должны создать пакетный файл.

Например, в Unix:

$cat HelloWorld.java  
public class HelloWorld {
    public static void main( String ... args ) {
         System.out.println("Hola mundo!");
    }
}
$cat M.mf 
Main-Class: HelloWorld
$cat hello
#!/bin/sh
exec java -jar $0 "$@"
$javac HelloWorld.java  
$jar -cmf M.mf  hello.jar HelloWorld.class 
$cat hello.jar >> hello 
$chmod +x hello
$./hello  
Hola mundo!

В Windows вы должны создать пакетный файл, например:

::hello.cmd 
javaw -jar hello.jar 

Который имеет тот же эффект.

В Windows и OSX вы можете дважды щелкнуть по банке, чтобы запустить его, я уверен, что вы можете добавить триггер и в Linux.

Надеюсь, эта помощь

1 голос
/ 18 июля 2011

Вам нужен инструмент под названием «Java Executable Wrapper». Вы можете использовать его для упаковки всех ваших файлов классов в один исполняемый пакет.

Один, который я рекомендую, это launch4j, вы можете скачать его с sourceforge launch4j.sourceforge.net

Launch4J можно использовать для создания автономных исполняемых файлов (.exe) из файла JAR для Windows Environment.

1 голос
/ 17 июля 2011

Excelsior JET - http://www.excelsior -usa.com / jet.html - утверждает, что компилируется в собственный код и обеспечивает собственную поддержку выполнения, поэтому для него не требуется существующая JVM.Коммерческий продукт.

Я сам не пробовал, но за эти годы они потратили немало усилий, чтобы представить JET как отличный способ развертывания предварительно скомпилированных двоичных файлов.


Также обратите внимание, что если у вас есть исполняемый / исполняемый файл jar, который отлично работает с "java -jar someting.jar", и вы просто хотите иметь возможность вызывать его более удобным способом, эторабота программы, принимающей вашу команду и запускающей команду java.

Для Linux вы можете часто добавлять псевдоним, говорящий, что «что-то» расширяется до «java -jarthing.jar», а некоторые интерпретаторы команд допускаютговоря, что все команды, заканчивающиеся на jar, должны выполняться специально.Точные данные зависят от того, какую оболочку (интерпретатор командной строки) вы используете.

0 голосов
/ 17 июля 2011

Java-программа работает на JVM, поэтому первый вопрос, который я не думаю, что есть компилятор, который может хорошо выполнять эту работу. Что касается второго вопроса, поскольку jar-файл сам по себе не является исполняемым файлом, на целевой машине должны быть какие-то настройки, «выполнение» jar-файла без предоставления команды java является вопросом удобства для пользователя. В Windows каждое расширение файла имеет программу, связанную с ним, поэтому в документах .doc (как правило) есть Word, так как программа связана с этим - этот параметр задается установщиком Office, среда выполнения java также устанавливает параметр для файлов .jar при его установке. , но за кулисами система будет использовать команду java. Итак, короткий ответ на второй вопрос: зависит от целевой машины.

0 голосов
/ 17 июля 2011

Дело в том, что Java интерпретируется JVM, поэтому вам, по крайней мере, нужно будет поставлять его вместе с приложением.

Чтобы быть немного более конкретным в этом, Java отчасти скомпилирована вбайт-код, поэтому он может быть интерпретирован быстрее.Но Байт-код не может работать без JVM.Это хорошая сторона Java: вам не нужно перекомпилировать ваши приложения для запуска на других платформах, таких как Linux или OS X, об этом позаботится JVM (так как он написан на нативном коде и перекомпилируется для этих платформ).

Существуют некоторые компиляторы, которые могут преобразовать ваш Java-код во что-то родное, например C, которое затем может быть выполнено без JVM.Но это не идея Java, и большинство из этих инструментов не справляются со своими задачами.

Если вы хотите, чтобы ваше приложение работало без интерпретатора, вам нужно использовать скомпилированный язык, такой как C или C ++

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...