如何在我的批处理文件中引用所有外部jar文件

时间:2014-08-27 12:01:11

标签: java batch-file solr jar

这是我的批处理文件代码

@echo off
set "CLASSPATH=%CLASSPATH%;\solr-4.6.1\solr-4.6.1\dist\solrj-lib\httpcore-4.2.5.jar;\solr-4.6.1\solr-4.6.1\example\solr-webapp\webapp\WEB-INF\lib\httpmime-4.2.6.jar;\solr-4.6.1\solr-4.6.1\dist\solrj-lib\httpclient-4.2.6.jar;
\solr-4.6.1\solr-4.6.1\dist\solrj-lib\jcl-over-slf4j-1.6.6.jar;\solr-4.6.1\solr-4.6.1\dist\solrj-lib\log4j-1.2.16.jar;\solr-4.6.1\solr-4.6.1\dist\solrj-lib\slf4j-api-1.6.6.jar;
\solr-solrj-4.0.0.jar\solr-solrj-4.0.0.jar;\solr-4.6.1\solr-4.6.1\dist\solrj-lib\slf4j-log4j12-1.6.6.jar;"
cp=

javac -cp "%cp%" SolrjPopulator.java
java -cp "%cp%" SolrjPopulator
pause

运行批处理文件后,java编译器找不到jar文件。

1 个答案:

答案 0 :(得分:0)

@echo off
set "CLASSPATH=%CLASSPATH%;.\solr-4.6.1\solr-4.6.1\dist\solrj-lib\httpcore-4.2.5.jar;.\solr-4.6.1\solr-4.6.1\example\solr-webapp\webapp\WEB-INF\lib\httpmime-4.2.6.jar;.\solr-4.6.1\solr-4.6.1\dist\solrj-lib\httpclient-4.2.6.jar;.\solr-4.6.1\solr-4.6.1\dist\solrj-lib\jcl-over-slf4j-1.6.6.jar;.\solr-4.6.1\solr-4.6.1\dist\solrj-lib\log4j-1.2.16.jar;.\solr-4.6.1\solr-4.6.1\dist\solrj-lib\slf4j-api-1.6.6.jar;.\solr-solrj-4.0.0.jar\solr-solrj-4.0.0.jar;.\solr-4.6.1\solr-4.6.1\dist\solrj-lib\slf4j-log4j12-1.6.6.jar;"


javac -cp "%CLASSPATH%" SolrjPopulator.java
java -cp "%CLASSPATH%" SolrjPopulator
pause

作为路径\指向驱动器根目录 - 您需要.\。类路径定义中有一个新行。JAVA使用了%CP%变量而不是%CLASSPATH%cp=不是命令,可能会产生错误。

或者如果你不想手动列出所有的罐子:

@echo off

set "solr_location=.\solr-4.6.1"

setlocal enableDelayedExpansion
pushd %solr_location%
for %%a in (*.txt) do (
    if not defined classpath (
        set "classpath=%%~a"
    else (
        set "classpath=!classpath!;%%~a"
    ) 
)
set "classpath=!classpath!;"
popd

javac -cp "%CLASSPATH%" SolrjPopulator.java
java -cp "%CLASSPATH%" SolrjPopulator
endlocal
pause