лучший способ развернуть пакет - PullRequest
0 голосов
/ 23 июня 2010

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

Какой самый лучший способ развернуть и использовать мою банку?

  1. установка classpath;
  2. использовать переменную CLASSPATH;
  3. с использованием механизма расширения.

Ответы [ 5 ]

1 голос
/ 23 июня 2010

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

Не развертывайте с использованием механизма расширения, поскольку существует риск, что вы будете вмешиваться в приложения, запускаемые любым пользователем, использующим JVM, которую вы «расширили».

Лучшее решение - создать и развернуть скрипт-обертку, использующий аргумент "-cp", или ярлык, который запускает самозапускающийся файл JAR ... как подсказывают другие ответы.

0 голосов
/ 23 июня 2010

Если вы подразумеваете под «развертыванием и использованием» то, что хотите использовать в другом приложении, установите его в classpath этого приложения.

Если вы используете механизм расширения (я предполагаю, что вы имеете в виду помещениеjar в pathtojava / lib / ext) каждое приложение, использующее этот jvm, будет загружать jar, те же учетные записи для CLASSPATH, что и системная переменная.Скорее всего, в этом нет необходимости?

Если вы хотите выполнить / использовать jar как отдельное приложение;просто запустите его из командной строки, никакой классовой путь не требуется.Если вы хотите развернуться на сервере, вы, скорее всего, захотите сделать вместо этого войну или ухо.

0 голосов
/ 23 июня 2010

Настройка classpath (с использованием -cp) - лучший способ, так как вы можете иметь разные пути к классам для каждого приложения.Переменная среды CLASSPATH является глобальной для всех Java-приложений, работающих на компьютере, так же как и механизм расширения, поэтому вы, вероятно, не захотите их использовать.

Если ваш код исполняемый (то есть имеет public static void main(String[] args))method), вы также можете указать класс, в котором находится метод main, и связанный путь к классу в файле манифеста внутри файла Jar.Как только вы это сделаете, вы можете сделать это:

java -jar myJar.jar

И все остальное сработает Java.

0 голосов
/ 23 июня 2010

Если у вас есть основной класс в этом банке, который вы хотите запустить, лучший способ - поместить файл META-INF / MANIFEST.MF в банку и запустить свой класс, используя java -jar mypackage.jar

Манифест должен содержать атрибут Class-Path и Main-Class

См. http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#JAR%20Manifest

0 голосов
/ 23 июня 2010

На мой взгляд, лучше всего предоставить пакетные файлы и сценарии оболочки для запуска приложения.

Сложные сценарии проверяют переменные среды, такие как $ JAVA_HOME (% JAVA_HOME%), и используют их, если они определены, или используют значение по умолчанию.value.

Внутри скрипта вы можете построить classpath во внутренней переменной и запустить приложение со строкой, подобной

%JAVA_HOME%\bin\java.exe -cp %LIBRARIES% com.example.Main

. Я бы предпочел это решение, а не альтернативу java -jar Application.jar, потому чтоэтот требует, чтобы вы установили classpath в манифесте jars.Поэтому развертывание приложения, которое зависит от существующих библиотек в целевой системе, довольно сложно, просто потому, что вы должны знать пути к библиотекам до того, как создадите приложение.

...