1

アプリケーションを実行する基本的な .bat ファイルを作成しています。これは、自動起動機能を取得するためです。

ただし、何らかの理由System.getProperty("user.dir")で、常にプログラムへの正しいパスを取得できるとは限りません。

基本的に、これを.batファイルに保存しています:

protected final String fileSeparator=System.getProperty("file.separator");
out.println("@echo off");
out.println("start " + System.getProperty("user.dir") + fileSeparator +"App.jar");
out.println("exit");

Windows サーバーでは正しいパスが返されますが、Vista では返されません。

これをすべてのバージョンの Windows で動作させる方法はありますか?

4

2 に答える 2

3

user.dir = ユーザーの作業ディレクトリ [ドキュメントから]

この変数の値に基づいて決定を下すことは困難です。「java」を起動するプログラムによっては、値が異なる場合があります。たとえば、bat ファイルは、さまざまなコマンド ウィンドウから呼び出されたものとは異なる作業ディレクトリを持つことができます。

%~dp0を使用してバッチ スクリプトの場所を取得し、これに関連する他のパスを配置できます。

もう 1 つのオプションは、プログラム ディレクトリを制御する簡単な方法を可能にする launch4j のようなツールを使用することです。

于 2013-10-02T11:12:26.633 に答える
3

このようにJavaプログラムを起動するときにuser.dirを提供することでこれを行うことができます

java somepackage.Main -Duser.dir=C:/Users/myUser
于 2013-10-02T10:53:52.520 に答える