【发布时间】:2011-11-14 09:29:14
【问题描述】:
我在 .jar 文件中有一个用 Scala 编写的 Swing 应用程序。我使用命令scala "filepath\filename.jar" 创建了一个桌面快捷方式,它可以工作,但它首先会打开一个命令窗口,该窗口位于后台,直到我关闭应用程序。我想让它消失。
我相信对于 Java,您应该为此使用 javaw 而不是 java。我尝试将scala.bat 文件复制到一个名为scalaw.bat 的新文件中并将第24 行更改为
if exist "%JAVA_HOME%\bin\javaw.exe" set "_JAVACMD=%JAVA_HOME%\bin\javaw.exe"
和第 28 行到
if "%_JAVACMD%"=="" set _JAVACMD=javaw
但是(更新桌面快捷方式后)我仍然会出现命令窗口。有什么想法吗?
更新:我尝试将 scala-library.jar 添加到清单中,但它不起作用,我猜是因为路径是相对于 jar 的根目录。其他选项似乎是将整个 scala-library jar 包含在 jar 文件 (Creating a jar file from a Scala file) 中,但我不认为这是一个解决方案。
或者我可以将 jar 解压到其组成的 .class 文件中并使用快捷方式
javaw.exe -cp "%SCALA_HOME%/lib/scala-library.jar";"filepath\\" packageName.className
但是……这涉及拆开罐子。
我发现的另一个半解决方法是编辑快捷方式,使其命令窗口最小化。
解决方案:根据 eugener 的回答,您需要使用 javaw 不带 -jar 选项,但指定 jar 文件,例如
javaw -cp "%SCALA_HOME%/lib/*";"C:/path/yourjar.jar" packageName.className
如果它是一个 Swing 应用程序并且您使用 scala-swing 库,您也需要包含它,或者使用上面的 * 通配符。
【问题讨论】:
标签: java windows swing scala jar