2011-09-10 3 views
10

私はScalaで書かれたSwingアプリケーションを.jarファイルに持っています。私はデスクトップのショートカットをコマンドscala "filepath\filename.jar"で作った。ただし、アプリケーションを終了するまではバックグラウンドで最初にコマンドウィンドウを表示する点が異なります。私はこれを遠ざけるようにしたい。コマンドウィンドウなしでWindows上でScala Swingアプリケーションを起動

私はこの目的でjavaの代わりにjavawを使用すると考えています。私は

if exist "%JAVA_HOME%\bin\javaw.exe" set "_JAVACMD=%JAVA_HOME%\bin\javaw.exe" 

とライン28

if "%_JAVACMD%"=="" set _JAVACMD=javaw 

に、私はまだ取得しています(デスクトップショートカットを更新した後)にライン24をへ scalaw.batと呼ばれる新しいファイルに scala.batファイルをコピーし、変更してみましたコマンドウィンドウが表示されます。何か案は?


更新:パスがjarファイルのルートに対して相対的であるので、私は推測する、私はマニフェストにscala-library.jarを追加しようとしたが、それは動作しません。他のオプションは、jarファイル(Creating a jar file from a Scala file)内のスカラーライブラリのjarファイル全体を含めるように思われますが、私はその解決策を考慮しません。

または私はその構成.classファイルにjarファイルを解凍し、jarファイルを開梱含まショートカット

javaw.exe -cp "%SCALA_HOME%/lib/scala-library.jar";"filepath\\" packageName.className

けど...を使用することができます。

私が見つけたもう一つの半回避策は、ショートカットを編集してコマンドウィンドウを最小限に抑えることです。


ソリューションは:eugenerの答えに従って、あなたは -jarオプションを指定せずにjavawを使用する必要がありますが、例えばのjarファイルを指定します

javaw -cp "%SCALA_HOME%/lib/*";"C:/path/yourjar.jar" packageName.className 

それはSwingのアプリだと、あなたはあなたにもあることが含まれる、または上記のよう*ワイルドカードを使用する必要がありますscala-swingライブラリを使用する場合。

答えて

4

javawを使用して直接アプリを起動することをおすすめします。 ScalaはJavaと同じバイトコードにコンパイルするので、あなたはそれを行うことができます。

+0

しかし、 'jar'を起動している場合、クラスパスはすでにマニフェストになければなりませんか? –

+0

マニフェストを使用するか、クラスパスを記述できるかは、より柔軟な-cpパラメータを使用します。IMO –

+1

-cpと-jarの両方を使用する場合、-cp設定は無視されます。 –

0

batファイルをexe(私はを使用)にコンパイルしてみることができます。私はこれがコマンドウィンドウの外観を妨げると信じています。私は長い間Windowsを使用していませんでしたが、それはときどき私を助けたことを覚えています。

1

はっきり程度-jarjava command explanationに述べています:このオプションを使用すると

、JARファイルには、すべてのユーザクラスの源であり、他のユーザクラスパスの設定は無視されます。

作るとショートカット javaw.exeの-cp "%SCALA_HOME%\ LIB \スカラ-library.jar"; "%SCALA_HOME%\ LIB \スカラ-swing.jar";「C:/パス/ yourjar.jar "packageName.mainClassName が機能しました。

解決策には、-cp引数のライブラリ+パッケージ化されたターゲットコードが含まれており、-jarスイッチは使用しません。問題の解決策としても与えられている。

関連する問題