簡體   English   中英

如何編寫批處理文件來設置類路徑並執行java程序

[英]How to write a batch file to set classpath and execute java programs

我的一些 java 程序需要這么多 jar 文件才能執行。 為了執行此操作,我可能必須將所有這些 jar 文件添加到環境變量的類路徑變量中,否則每次打開新的 cmd 提示符時都必須在命令提示符下手動設置類路徑。 我不想在環境變量中的 classpath 變量中添加所有 jar 文件,也不想每次打開新的 cmd 提示時手動設置。 我想在批處理文件中編寫一個腳本來設置類路徑,並且它自己需要運行 java 程序。 這樣,當我想運行我的程序時,我只會運行批處理文件並一個一個地運行我的程序。 我寫了一個批處理文件來設置類路徑。 但是,當我運行這個批處理文件時,它會自動關閉。 因此,我無法使用我通過批處理文件設置的類路徑。再次,我必須打開新的 cmd 提示符,設置類路徑並運行我的 Java 程序。 要使用批處理文件實現此目的,我該如何進行。 感謝任何幫助。 謝謝你。

正如傑克在評論中所寫的那樣,不需要批處理文件在命令行上指定 Java 的類路徑。

查看版本 7 Java 文檔頁面:

-cp或更好的可讀性-classpath可以在命令行上使用來定義類路徑

可以使用分號作為分隔符來指定多個類的路徑。

如果一個路徑包含空格字符,則必須在所有路徑周圍使用雙引號。

例子:

"%JAVA_HOME%\bin\java.exe" -classpath "C:\Java\My First Class;C:\Java\MySecondClass" MyJavaApp

這種方法主要用於使用 Java 應用程序的快捷方式 (*.lnk),該應用程序需要與系統范圍環境變量CLASSPATH 中通常使用和定義的類不同的類。

但是為了在控制台窗口中開發和測試 Java 應用程序,其中的類列表與定義的系統范圍不同,最好有一個批處理文件,例如名為JavaDevEnv.bat的批處理文件, JavaDevEnv.bat包含以下代碼

@echo off
title Java Development Environment
cd /D "Path to\Preferred Working Directory\For\Java\Development"
set "CLASSPATH=C:\Java\My First Class;C:\Java\MySecondClass"

並使用命令行在 Windows 桌面或 Windows 開始菜單中創建快捷方式

%SystemRoot%\System32\cmd.exe /K "Path to\Batch File\JavaDevEnv.bat"

在快捷方式文件 (*.lnk) 的屬性中定義。

工作目錄也可以在快捷方式文件的屬性中使用Start in定義,而不是使用更改目錄命令在批處理文件中設置。

並且還應在快捷方式文件的屬性中寫入適當的注釋,例如與用於將控制台窗口的標題設置為使用此快捷方式的提示的命令title相同。

雙擊此快捷方式會打開一個新的控制台窗口,執行設置窗口標題、工作目錄和 Java 使用的環境變量CLASSPATH的批處理文件,然后在此控制台窗口中執行,然后保持打開以供用戶輸入。

批處理文件:為了運行使用某些 jar 文件的類和同一應用程序的類的類文件。

從 Eclipse IDE 開始,將所有構建路徑條目設置為類路徑。 當我們通過批處理文件運行它時,我們也需要設置目標應用程序類文件。 如下所示。

REM MyApplication\mainClass.bat
REM MyApplication\target\classes - %~dp0target\classes;

mainClass.bat 包含設置的類路徑

@echo off
REM Maven local repository path
SET REPO=%USERPROFILE%\.m2\repository

REM Setting the class path
SET CLASSPATH=%REPO%\junit\junit\4.11\junit-4.11.jar;%REPO%\com\oracle\ojdbc5\11.1.0.7.0\ojdbc5-11.1.0.7.0.jar;%~dp0target\classes;%~dp0target\test-classes


java -Xmx256m com.github.yash777.MainClass

用於遠程調試的Java 命令行選項

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 <YourAppName>

也許這不是您關於在執行后關閉批處理的問題的答案,但我使用這樣的文件來設置我的CLASSPATH環境變量:

調用 java-class.bat

::
:: %1 directory where all jars are located
:: %2 main class
:: %* program parameters
::
:: JAVA_OPTS ... parameter before main class
::
@echo off

set libdir=%1
shift
set main=%1
shift

set JARS=
set CLASSPATH=

pushd %libdir%
for %%i in (*.jar) do call cpappend.bat %libdir%\%%i
set CLASSPATH=.%JARS%
popd

:: debug
echo %CLASSPATH%
echo %JAVA_HOME%\bin\java %main% %1 %2 %3 %4 %5 %6 %7 %8 %9

%JAVA_HOME%\bin\java %JAVA_OPTS% %main% %1 %2 %3 %4 %5 %6 %7 %8 %9

cpappend.bat

@echo off
set JARS=%JARS%;%1

該腳本需要單個目錄中的所有依賴項,並且必須設置 JAVA_HOME。 然后調用你的java程序:

call-java-class.bat path-to-lib-dir com.foo.bar.Main -help

大多數代碼取自https://alvinalexander.com/blog/post/page-1/thu-mar-9-2006-dynamically-build-environment-variables-in-dos-c/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM