在一个项目中,我正在尝试为 Apache Karaf 设置一个自动构建系统(我需要在 Karaf 中运行几个命令来设置全新安装的工作环境)。Karaf 包含一个批处理/脚本文件,它设置几个参数,然后调用实际的 Java 程序。本质上,我希望能够执行以下操作:
java MyProgramClass.class < commandTextFile.txt
但是当我尝试这个时,它什么也没做。我的目标是简单地复制 karaf.bat 文件,稍微修改它(如下所示)以制作一个我可以运行的“karaf-install.bat”。我修改了 karaf.bat 的部分如下,我所做的只是< "C:\commandFile.txt
在最后添加(以下都是一行,为便于阅读而中断):
"%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%"
-Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed"
-Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext"
-Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%"
-Dkaraf.base="%KARAF_BASE%" -Dkaraf.data="%KARAF_DATA%"
-Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties"
%KARAF_OPTS% %MAIN% %ARGS% < "C:\commandFile.txt"
然而,卡拉夫什么也没显示。它就像我正常执行它一样运行;我的命令没有执行。有没有办法从控制台重定向到 Java 程序?我做错了吗?
无论如何,这最终将在 Windows 和 OS X 上完成,但我目前专注于 Windows。
更新:原来这似乎对我在 OS X 上工作(卡拉夫挣扎(通过说“找不到命令:”),但我认为这是因为它在初始化所有内容之前获取命令),但 Windows 仍然没有甚至得到命令。我会多打几下。