リクエスト:
これは、私のロケールの Java 開発者が直面する非常に一般的な問題です。私は本当にこれで何日も立ち往生しています。ドキュメントを読んで、たくさん検索して試しました。JavaExe に関連するすべての stackoverflow の質問を読んでください。以前に同様のことをしたことがあり、包括的な回答がある場合にのみ返信してください。コミュニティには本当に感謝しています!
シナリオ:
JavaExeを使用して、アプリケーションをデスクトップインタラクティブ機能のシステム サービスとして実行しています。正確には、デスクトップのスクリーンショットをキャプチャするアプリケーションがあります。誰も停止できないように、任意のユーザーログインで(管理者として)実行したい。
myapp.jar、settings.txt、および lib dir があります。
私はたくさん検索して、JavaExeが機能することを発見しました(その例を見て)
誰かがより良い方法を持っているなら。そう申し上げてください。
問題:
私の調査によると、
.exe のような名前の .properties ファイルを作成し
"RunType = 1"
、このファイルに書き込む必要があります。メインクラスで静的メソッドを定義します:
serviceInit()
クラスまたは参照/インポートを配置する必要がありますか? どのように?
編集:
以下の私のコードは、スタンドアロンの .jar として、また javaExe.exeでも機能します。
システムサービスを作成し、 SYSTEMユーザーとして実行するようになりました。しかし、デスクトップに対してインタラクティブではありません。つまり、GUI は表示されません。
package temp;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
public class Temp {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
serviceInit();
}
public static boolean serviceInit(){
new Thread(){
public void run(){
Integer i = 0;
while(i < 999999999){
JOptionPane.showMessageDialog(null,i);
i++;
}
}
}.start();
return true;
}
}
そして、.jar、lib ディレクトリ、および settings.txt を 1 つの .exe にバンドルすることは可能だと思いませんか?