de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Trijit
Trijit
Question

CreateProcess error=2, Sistem tidak dapat menemukan file yang ditentukan

Saya sedang menulis program di java yang akan mengeksekusi winrar dan unzip file jar untuk saya yang ditempatkan di h:\myjar.jar ke dalam folder h:\new. Kode java saya seperti ini

import java.io.File;
import java.io.IOException;

public class MainClass {

    public static void main(String[] args) {

        Runtime r = Runtime.getRuntime();
        Process p = null;

        try {
            File dir = new File("C:/Program Files/WinRAR");
            p = r.exec("winrar x h:\\myjar.jar *.* h:\\new", null, dir);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ketika saya mengeksekusi ini, saya mendapatkan kesalahan ini

java.io.IOException: Cannot run program "winrar" (in directory "C:\Program Files\WinRAR"): CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at MainClass.main(MainClass.java:16)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 4 more

Adakah yang bisa memberi tahu saya mengapa saya mengalami masalah seperti itu. Apa perubahan yang perlu saya masukkan dalam kode agar bisa berfungsi?

25 2013-10-27T18:35:16+00:00 3
Ahmed Ashour
Ahmed Ashour
Pertanyaan edit 23 Agustus 2018 в 11:03
Pemrograman
java
process
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
 MadProgrammer
MadProgrammer
27 Oktober 2013 в 8:23
2013-10-27T20:23:19+00:00
Lebih
Sumber
Sunting
#22635854

Dengan asumsi bahwa winrar.exe ada di PATH, maka Runtime.exec mampu menemukannya, jika tidak, Anda perlu menyediakan jalur yang sepenuhnya memenuhi syarat untuk itu, misalnya, dengan asumsi winrar.exe diinstal di C:/Program Files/WinRAR, Anda perlu menggunakan sesuatu seperti ...

p=r.exec("C:/Program Files/WinRAR/winrar x h:\\myjar.jar *.* h:\\new");

Secara pribadi, saya akan merekomendasikan Anda untuk menggunakan ProcessBuilder karena memiliki beberapa kemampuan konfigurasi tambahan di antara hal-hal lainnya. Jika memungkinkan, Anda juga harus memisahkan perintah dan parameter Anda ke dalam elemen String yang terpisah, ini menangani hal-hal seperti spasi jauh lebih baik daripada variabel String tunggal, misalnya ...

ProcessBuilder pb = new ProcessBuilder(
    "C:/Program Files/WinRAR/winrar",
    "x",
    "myjar.jar",
    "*.*",
    "new");
pb.directory(new File("H:/"));
pb. redirectErrorStream(true);

Process p = pb.start();

Jangan lupa untuk membaca isi InputStream dari proses, karena jika tidak melakukannya, proses akan terhenti.

 MadProgrammer
MadProgrammer
Jawaban edit 24 Juni 2015 в 10:09
39
0
 viator
viator
27 Oktober 2013 в 7:27
2013-10-27T19:27:44+00:00
Lebih
Sumber
Sunting
#22635853

dir yang Anda tentukan adalah direktori kerja dari proses yang sedang berjalan - tidak membantu untuk menemukan executable. Gunakan cmd /c winrar ... untuk menjalankan proses mencari executable di PATH atau cobalah untuk menggunakan absolute path ke winrar.

10
0
 Reimeus
Reimeus
27 Oktober 2013 в 6:38
2013-10-27T18:38:15+00:00
Lebih
Sumber
Sunting
#22635852

Argumen pertama yang lengkap dari exec diinterpretasikan sebagai executable. Gunakan

p = rt.exec(new String[] {"winrar.exe", "x", "h:\\myjar.jar", "*.*", "h:\\new" }
            null, 
            dir);
 Reimeus
Reimeus
Jawaban edit 27 Oktober 2013 в 6:44
1
0
Related communities 3
Programmer JAVA indonesia
Programmer JAVA indonesia
1 119 pengguna
Buka telegram
jvmusergroup
jvmusergroup
326 pengguna
Bismillahirrohmanirohim. Perhatian! Grup ini merupakan ekspansi dari grup Forum Java Programmer Indonesia di Facebook. Silahkan berbagi pengalaman dan masalah seputar Java dan keluarganya. https://t.me/JVMIndonesia Admin : @hendisantika34
Buka telegram
Java Indonesia🇲🇨
Java Indonesia🇲🇨
144 pengguna
Programmer Java Indonesia. Grup ini digunakan untuk bertanya terkait materi belajar Java / fullstack Warning=> -dilarang promosi(izin adm -18+🔞 - berbicara sopan - no spam /boot Mohon ikut aturan grup belum di keluarkan
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
UbiBot UK
Terdaftar 14 jam yang lalu
2
Галина Утяшова
Terdaftar 1 hari yang lalu
3
Asilbek Qadamboyev
Terdaftar 4 hari yang lalu
4
Akshit Mehta
Terdaftar 1 minggu yang lalu
5
me you
Terdaftar 1 minggu yang lalu
ID
JA
RU
TR
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi