Apa yang menyebabkan kesalahan “Tidak dapat mengakses jarfile”?

136

Saya ingin menjalankan program saya tanpa menggunakan IDE. Saya telah membuat file jar dan file jar exectuable. Ketika saya mengklik dua kali file exe jar, tidak ada yang terjadi, dan ketika saya mencoba menggunakan perintah dalam cmd itu memberi saya ini:

Error: Unable to access jarfile <path>

Saya menggunakan perintah: java -jar Calculator.jar

Bagaimana saya membuat toples:

  1. Klik kanan pada folder proyek (Kalkulator)
  2. Pilih
  3. Klik pada Java Folder dan pilih "Exectuable Jar File", lalu pilih berikutnya
  4. Luncurkan Konfigurasi: Utama - Kalkulator
  5. Buat Tujuan Ekspor
  6. Tekan "Selesai" dan untung! Yah, tidak juga.
Joseph Smith
sumber
1
Kedengarannya seperti Jar rusak, mungkin melewatkan entri Manifest.
MadProgrammer
Anda harus menunjukkan bagaimana Anda membuat JAR, apa yang ada di dalamnya dan bagaimana Anda mencoba menjalankan program. Kode Java tidak relevan di sini.
Jochen
Sudahkah Anda mencoba meluncurkan ulang elcipse dan mengkompilasi ulang? Terkadang Eclipse telah melakukan beberapa hal aneh yang dapat dihindari dengan meluncurkan kembali.
MattS
Saya menemukan kode yang sulit dibaca dan dipikirkan. Dan apa gunanya memiliki semuanya dalam fungsi utama statis dan memiliki metode instan untuk menghapus konsol?
Dave Newton
1
Saya tidak punya jawaban untuk masalah saya, saya jawab sendiri, dan tidak ada cara untuk menunjukkan penghargaan saya di komentar, selain berterima kasih kepada mereka melalui balasan. Baca kembali komentar Anda.
Joseph Smith

Jawaban:

78

Saya mengalami masalah ini ketika saya menjalankan file Jar saya sebagai

java -jar TestJar

dari pada

java -jar TestJar.jar

Kehilangan ekstensi .jar juga menyebabkan masalah ini.

Vinay Kadalagi
sumber
1
Ini jawaban yang benar. Ekstensi .jar harus ditambahkan ke nama file jar.
Abhijay Kumar
10
Itu tidak selalu jawaban yang benar, saya menambahkannya dan itu tidak berhasil.
Alan B
Dalam kasus saya, saya pikir itu adalah file sementara itu adalah folder di konsol. File jar berada di folder yang memiliki nama yang sama.
Willy Makend
58

Tetap

Saya baru saja meletakkannya di folder yang berbeda dan berhasil.

Joseph Smith
sumber
62
Adakah yang bisa menjelaskan mengapa ini terjadi?
Anastasios Andronidis
7
Kedengarannya seperti itu bisa menjadi masalah izin file, namun tebakan total.
Aiden Fry
2
Saya punya masalah serupa di WIndows, menggunakan cygwin. Jadi cygwin menggunakan jalur yang berbeda dari windows /cygdrive/c/vs C:\ saya memperbaikinya dengan menggunakan realpath --relative-to=$(pwd) path/to/jarfileJadi itu akan selalu menegakkan iso jalur relatif menggunakan/cygdrive/c/.../path/to/jarfile
Rik
1
Saya memiliki masalah yang sama, dengan toples saya juga, saya tidak sengaja salah mengetik jalur toples
Ori Wiesel
1
@Rik Komentar Anda bermanfaat meskipun tidak akan berfungsi di dos paths dan file java di cygwin path. Solusinya di sini adalahjava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n
31

[Mungkin hanya Windows]

Waspadalah terhadap ruang di jalan, bahkan ketika tabung Anda berada di direktori kerja saat ini. Misalnya, bagi saya ini gagal:

java -jar myjar.jar

Saya dapat memperbaikinya dengan memberikan path lengkap yang dikutip ke toples:

java -jar "%~dp0\myjar.jar" 

Penghargaan diberikan untuk jawaban ini karena menempatkan saya di jalur yang benar ....

Robert Brown
sumber
Terima kasih untuk ini. Perlu memberikan path lengkap di Linux juga, jika mencoba menjalankannya dari direktori yang berbeda.
Pubudu
Jawaban ini sebagian merupakan duplikat dari jawaban yang sudah diberikan pada pertanyaan ini. Ini adalah jawaban sebelumnya dengan metode yang sama: path yang dikutip penuh. 6 Sep 15 ' oleh @benez
sophievda
18

Saya punya masalah ini di bawah CygWin di Windows. Saya telah membaca di tempat lain bahwa Jawa tidak memahami jalan Cygwin ( /cygdrive/c/some/dirbukan C:\some\dir) - jadi saya menggunakan path relatif gantinya: ../../some/dir/sbt-launch.jar.

radumanolescu
sumber
Saya mengalami masalah persis ini di CygWin! Terima kasih selamanya!
Rhyuk
1
Dalam kasus di mana Anda memerlukan cygwin untuk menggunakan path yang diformat windows alih-alih cygwin Anda dapat menggunakan perintah cygpath -w / path / di sini untuk mengkonversi path ke Windows yang setara.
Jason Slobotski
@JasonSlobotski terima kasih atas tipnya, saya pikir komentar Anda harus menjadi jawaban sendiri.
Roberto Bonvallet
14

Saya memiliki masalah yang sama ketika mencoba meluncurkan file jar. Jalan itu berisi ruang, jadi saya harus memberi tanda kutip. Dari pada:

java -jar C:\Path to File\myJar.jar

saya harus menulis

java -jar "C:\Path to File\myJar.jar"
benez
sumber
Kutipan melakukan trik untuk saya karena saya juga memiliki ruang peralihan. Saya kemudian mencobanya tanpa spasi di jalan dan tanpa tanda kutip dan kemudian berhasil juga
Timothy
Pengumuman 2019: Solusi ini membantu saya, dengan tanda kutip! Tanpa tanda kutip dan tanpa spasi tidak berfungsi dalam kasus saya.
sophievda
11

Baru saja menemukan masalah yang sama mencoba membuat USB yang buruk ...

Saya mencoba menjalankan perintah ini di admin cmd

java -jar c:\fw\ducky\duckencode.jar -I c:\fw\ducky\HelloWorld.txt  -o c:\fw\ducky\inject.bin

Tetapi ada kesalahan ini:

Error: unable to access jarfile c:\fw\ducky\duckencode.jar

Larutan

Langkah 1

Klik kanan jarfile yang dimaksud. Klik properti. Klik buka blokir tab di sudut kanan bawah. File diblokir, karena itu diunduh dan tidak dibuat di PC saya.

Langkah ke-2

Dalam cmd saya mengubah direktori ke tempat file jar berada.

cd C:\fw\ducky\

Lalu saya mengetik dirdan melihat file itu bernamaduckencode.jar.jar

Jadi dalam cmd saya mengubah perintah asli untuk referensi file .jar.jar

java -jar c:\fw\ducky\duckencode.jar.jar -I c:\fw\ducky\HelloWorld.txt  -o c:\fw\ducky\inject.bin

Perintah itu dijalankan tanpa pesan kesalahan dan inject.bin yang saya coba buat sekarang terletak di direktori.

Semoga ini membantu.

Leon thomas
sumber
Terima kasih, milik saya juga dinamai apktool.jar.jar
Mayank Kumar
8

Saya memiliki masalah yang sama dan saya bahkan mencoba menjalankan CMD saya dengan hak administrator, tetapi itu tidak menyelesaikan masalah.

Hal dasarnya adalah pastikan untuk mengubah Direktori di cmd ke direktori saat ini di mana file jar Anda.

Lakukan langkah-langkah berikut:

1. Salin file jar ke Desktop.

  1. Jalankan CMD

  2. ketik perintah cd desktp

  3. lalu ketik java -jar filename.jar

Ini seharusnya bekerja.


Sunting : Dari JDK-11 dan seterusnya ( JEP 330 : Luncurkan Program Kode-Sumber File Tunggal)

Sejak Java 11, alat baris perintah java telah dapat menjalankan kode sumber file tunggal secara langsung. misalnya

java filename.java
Vishwa Ratna
sumber
5

Ini berhasil untuk saya.

cd /path/to/the/jar/

java -jar ./Calculator.jar
Bastian Cáceres Pino
sumber
5

Jika Anda menggunakan OSX, file yang diunduh ditandai dengan bendera keamanan yang mencegah aplikasi yang tidak ditandatangani berjalan.

untuk memeriksa ini, Anda dapat melihat atribut yang diperluas pada file

$ ls -l@
-rw-r--r--@ 1 dave  staff  17663235 13 Oct 11:08 server-0.28.2-java8.jar
com.apple.metadata:kMDItemWhereFroms         619
com.apple.quarantine          68

Anda kemudian dapat menghapus atribut dengan

xattr -c file.jar
nick fox
sumber
3

Ini juga dapat terjadi jika Anda tidak memberikan daftar parameter dengan benar. Inilah yang saya lakukan:

java -jar test@gmail.com testing_subject file.txt test_send_emails.jar

Alih-alih versi yang benar:

java -jar test_send_emails.jar test@gmail.com testing_subject file.txt
Kerbau
sumber
3

kadang-kadang itu terjadi ketika Anda mencoba (menjalankan atau membuat) file .jar di bawah folder / libs dengan klik kanan di android studio. Anda dapat memilih dropdown di atas Android stuio dan mengubahnya ke aplikasi . Ini akan bekerja

masukkan deskripsi gambar di sini

anand krish
sumber
2

Bagi saya itu terjadi jika Anda menggunakan karakter Polandia asli di foldername yang ada di PATH. Jadi mungkin menggunakan karakter yang tidak biasa adalah alasan dari masalahnya.

Huxwell
sumber
2

Masalah khusus saya disebabkan karena saya bekerja dengan direktori yang melibatkan tautan simbolik (pintasan). Akibatnya, berusaha java -jar ../../myJar.jartidak berhasil karena saya tidak berada di tempat yang saya kira.

Mengabaikan jalur file relatif telah memperbaikinya.

MattSayar
sumber
2

Dalam kasus saya nama file yang disarankan untuk digunakan adalah jarFile*.jardi baris perintah. File dalam folder itu jarFile-1.2.3.jar. Jadi saya mengganti nama file menjadi jarFile. Lalu saya menggunakan jarFile.jaralih-alih jarFile*.jardan kemudian masalah terselesaikan

suku
sumber
setelah melakukan ini, saya tidak dapat mengakses masalah file jar diselesaikan.
Kembangkan
2

Itu bisa terjadi pada mesin windows ketika Anda memiliki spasi dalam nama folder. Solusinya adalah dengan memasuki jalur antara "". Sebagai contoh:

java -jar c:\my folder\x.jar    --> 
java -jar "c:\my folder\x.jar"
assaf
sumber
2
ini tidak menjawab pertanyaan, Anda harus menggunakan komentar untuk meminta informasi lebih lanjut.
awd
2

Untuk menghindari masalah izin, coba jalankan sebagai administrator. Ini bekerja untuk saya di Win10.

Gico
sumber
bagaimana dengan mac?
GvSharma
2

Saya tahu utas ini adalah tahun yang lalu dan masalah telah diperbaiki juga. Tapi saya harap ini akan membantu orang lain di masa depan karena saya telah mengalami beberapa masalah serupa ketika saya mencoba menginstal Oracle WebLogic 12c dan Oracle OFR di mana installernya dalam .jarformat. Untuk kasus saya, itu baik tidak membungkus direktori JDK dalam tanda kutip atau hanya salah ketik.

Jalankan Command Promptsebagai administrator dan jalankan perintah dalam format ini. Periksa ulang kalimat jika ada kesalahan ketik.

"C:\Program Files\Java\jdk1.xxxxx\bin\java" -jar C:\Users\xxx\Downloads\xxx.jar

Jika itu menunjukkan sesuatu seperti JRE 1.xxx is not a valid JDK Java Home, pastikan variabel Sistem untuk JAVA_HOMEdalam Variabel Lingkungan menunjuk ke direktori JDK yang benar. JDK 1.8 atau lebih direkomendasikan (2018).

Utas yang berguna di sini, Anda dapat merujuknya: Mengapa ini menunjukkan JDK Anda c: file program \ java \ jre7 bukan JDK yang valid saat menginstal server weblogic?

Boosted Nub
sumber
1

Saya memiliki masalah yang sama di mana TextMate atau sesuatu menggantikan tanda kutip ganda dengan tanda kutip ganda unicode.

Mengubah saya SELENIUM_SERVER_JARdari tanda kutip ganda unicode ke tanda kutip ganda biasa dan itu memecahkan masalah saya.

TankorSmash
sumber
1

ini karena Anda mencari file di jalur yang salah 1. cari path folder tempat Anda meletakkan file 2. ubah direktori cd dalam cmd gunakan jalur yang benar

Felipe
sumber
1

Saya menggunakan NetBeans dan memiliki masalah yang sama. Setelah saya menjalankan proyek build dan clean, program saya dapat dieksekusi. Dokumentasi Java mengatakan bahwa perintah build / clean adalah untuk membangun kembali proyek dari awal dan menghapus semua kompilasi sebelumnya. Saya harap ini membantu. Saya juga sudah membaca dokumentasinya. Oracle memiliki NetBeans dan jalur pembelajaran Java. Sangat membantu. Semoga berhasil!

pengguna8315373
sumber
1

Mungkin Anda telah menentukan versi toples yang salah.

cosbor11
sumber
1

Saya akhirnya menempelkan file jar saya ke folder yang sama dengan JDK saya jadi saya tidak harus memasukkan path. Saya juga harus membuka command prompt sebagai admin.

  1. Klik kanan Command Prompt dan "Run as administrator"
  2. Arahkan ke direktori tempat Anda menyimpan jdk Anda
  3. Dalam jenis prompt perintah: java.exe -jar <jar file name>.jar
Michaela Burns
sumber
1

Simpan file dalam direktori yang sama di mana Anda mengekstraknya. Itu berhasil bagi saya.

Joshi Aishwary
sumber
0

Sudahkah Anda mencoba menjalankannya di bawah hak administrator? artinya, jalankan perintah di "Run As" dan kemudian pilih administrator dengan kredensial admin yang tepat

bekerja untukku

Nick_Stubborn_Mex.
sumber
0

Saya mencoba ini:

Setelah memberikan file tersebut baca, tulis, jalankan hak istimewa:

chmod 777 java-repl.jar

alias jr="java -jar $HOME/Dev/java-repl/java-repl.jar"

Tidak dapat mengakses bla bla ..., ini ada di Mac OS

Jadi saya mencoba ini:

alias jr="cd $HOME/Dev/java-repl/ && java -jar java-repl.jar"

Kinglee
sumber
0

Ini tidak berfungsi "Tidak dapat mengakses jarfile"

"C:\Program Files\java\jdk-13+33-jre\bin\javaw.exe" -jar "C:\Program Files\Maxim Integrated Products\1-Wire Drivers x64\ OneWireViewer.jar"

Ini berhasil

"C:\Program Files\java\jdk-13+33-jre\bin\javaw.exe" -jar "C:\Program Files\Maxim Integrated Products\1-Wire Drivers x64\OneWireViewer.jar"

Perbedaannya adalah ruang tunggal di depan OneWireViewer.jar tidak tahan bahwa itu dikelilingi dengan tanda kutip dan bahkan memiliki ruang lain.

angar
sumber
0

Bagi saya itu terjadi karena saya menjalankannya dengan versi java default (7) dan bukan dengan versi java terkompilasi (8) yang digunakan untuk membuat toples ini.

Jadi saya menggunakan:

%Java8_64%\bin\java -jar myjar.jar

Alih-alih versi java 7:

java -jar myjar.jar
Adir D
sumber
0

Jika Anda menggunakan WSL, dan mengikuti panduan yang mengatakan, katakan ini:

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

Anda sebenarnya perlu menentukan path lengkap, meskipun Anda telah menyediakannya di java.library.pathbagian tersebut.

java -Djava.library.path=/mnt/c/dynamodb_local/DynamoDBLocal_lib -jar /mnt/c/dynamodb_local/DynamoDBLocal.jar -sharedDb
Pureferret
sumber
0

Ini adalah masalah izin, lihat apakah direktori berada di bawah Pengguna Anda. Itu sebabnya bekerja di folder lain!

Dimitrios
sumber
-1

pertama saya membuat variabel %JAVA_HOME% :

Ketika Anda mengunduh file tersebut, pastikan untuk memeriksa UNBLOCK TABproperti file seperti yang ditunjukkan di atas dalam posting "maartencls".

c:\users\my user\downloads\location of the file\all> java -jar yourfilename.jar

harap ini akan menyelesaikan masalah :)

mouf rendah
sumber