Командная строка Java с внешним .jar
Я разрабатываю проект с использованием .jar для повторного использования кода.
Итак, у меня есть .jar с именем TOOLS.jar, и я разрабатываю простую программу в файле HelloWorld.java, которая ссылается на мои пакеты TOOLS из TOOLS.jar
Я компилирую с помощью этой командной строки:
javac -g -d C:\MyApp -cp TOOLS.jar HelloWorld.java
Это успешно, и когда я хочу выполнить свое приложение, я использую эту команду (я в папке C:\MyApp):
java -cp <path>\TOOLS.jar;. HelloWorld
Успешно, но мой вопрос:
Как выполнить мое приложение, когда у меня есть кратность внешнего .jar?
Нужно ли добавлять каждый из них в команду с параметром -cp?
Есть ли способ генерировать только один двоичный файл и выполнять его (как .exe с программами C)?
Ответы
Ответ 1
Объединить каждый аргумент файла jar в cp с помощью
; on Windows
: on Linux or Mac
например.
java -cp <path>\TOOLS.jar;.;<path>\jar2.jar;<path>\jar3.jar HelloWorld
на новых JVM (6+, я думаю) вы также можете использовать * для добавления всех JAR в каталог, например.
java -cp .;<path>\*; HelloWorld
Чтобы сделать еще один шаг и создать один упакованный исполняемый файл, см. этот вопрос.
Ответ 2
Если у вас много файлов jar в одной папке и вы не хотите добавлять их в путь к классам вручную. Вы можете использовать .bat для Windows или оболочки на Linux.
cpappend.bat от tomcat
rem ---------------------------------------------------------------------------
rem Append to CLASSPATH
rem
rem $Id: cpappend.bat 301115 2002-08-04 18:19:43Z patrickl $
rem ---------------------------------------------------------------------------
rem Process the first argument
if ""%1"" == """" goto end
set CLASSPATH=%CLASSPATH%;%1
shift
rem Process the remaining arguments
:setArgs
if ""%1"" == """" goto doneSetArgs
set CLASSPATH=%CLASSPATH% %1
shift
goto setArgs
:doneSetArgs
:end
И еще один файл bat, в котором используется оператор for для добавления всего файла jar в classpath
set CURRENT_DIR=%cd%
set CLASSPATH=.
for %%i in (%CURRENT_DIR%\lib\*.jar) do call cpappend.bat %%i
start java -Duser.dir=%CURRENT_DIR% -cp %CLASSPATH% a.b.c.MainApp
Ответ 3
Если u имеет несколько внешних банок, скопируйте все банки, необходимые для C:\Program Files\Java\jdk1.7.0_17\jre\lib\ext
, и запустите команду javac "yourfilename.java"
. Он будет компилироваться без ошибок