1

これはおそらく単純な質問です。私は Java にかなり慣れていませんが、私の検索では、このコードが機能しない理由を正確に理解できませんでした。

String execLoc = ((System.getenv("APPDATA"))+"\\ARcraft\\exec\\");

ProcessBuilder getCrafting = new ProcessBuilder("Minecraft.exe");
getCrafting.directory(new File(execLoc));
getCrafting.start();

これを実行すると、次のように返されます。

Cannot run program "Minecraft.exe" 
(in directory "C:\Users\andrew\AppData\Roaming\ARcraft\exec"): 
CreateProcess error=2, The system cannot find the file specified

同様の問題を抱えた他の投稿を読み、さまざまな解決策を試しましたが、それらが使用する修正は私には何の役にも立たないようです。ファイルが存在し、コマンドプロンプトに貼り付けたときにプログラムによってフィードバックされるディレクトリから実行すると、ファイルが正しく実行されることを確認しました。

4

2 に答える 2

1

appdata パスではなくユーザー名だけを取得するには、コードを次のように変更します。

ProcessBuilder getCrafting = new ProcessBuilder("C:\\Users\\" +
    System.getProperty("user.name") + 
    "\\AppData\\Roaming\\ARcraft\\exec\\Minecraft.exe");
getCrafting.start();
于 2013-05-07T01:20:06.467 に答える
0

コマンドではProcessBuilder、exeファイルへのフルパスである必要があり、動作します:

 String execLoc = ((System.getenv("APPDATA"))+"\\ARcraft\\exec\\Minecraft.exe");
 ProcessBuilder getCrafting = new ProcessBuilder(execLoc);
 getCrafting.start();
于 2018-12-08T11:58:40.703 に答える