“Jarfile'a erişilemiyor” hatasına ne sebep olur?


136

Programımı IDE kullanmadan yürütmek istiyorum. Bir jar dosyası ve exectuable bir jar dosyası oluşturdum. Exe jar dosyasını çift tıklattığımda hiçbir şey olmuyor ve cmd'deki komutu kullanmaya çalıştığımda bana bunu veriyor:

Error: Unable to access jarfile <path>

Komutu kullanıyorum: java -jar Calculator.jar

Kavanozu nasıl yarattım:

  1. Proje klasörünü sağ tıklayın (Hesap makinesi)
  2. seçmek
  3. Java Klasörünü tıklayın ve "Exectuable Jar File" ı seçin, ardından sonraki
  4. Başlat Yapılandırma: Ana - Hesap Makinesi
  5. Dışa Aktarma Hedefi Oluştur
  6. "Finish" e basın ve kar edin! Pek değil.

1
Jar bir şekilde bozuk gibi görünüyor, muhtemelen Manifest girişini kaçırıyor.
MadProgrammer

JAR'ları nasıl oluşturduğunuzu, içinde ne olduğunu ve programı nasıl çalıştırmayı denediğinizi göstermelisiniz. Java kodu burada önemsizdir.
Jochen

Elipsi yeniden başlatmayı ve yeniden derlemeyi denediniz mi? Bazen Eclipse yeniden başlatılarak önlenebilecek garip şeyler yapar.
MattS

Kodu okumak ve düşünmek zor buluyorum. Ve her şeyi statik bir ana işlevde tutmanın ve konsolu temizlemek için tek örnekli bir yönteme sahip olmanın anlamı nedir?
Dave Newton

1
Sorunum için hiçbir cevabım yok, kendim cevapladım ve yorumlarda takdirimi göstermenin bir yolu yok, cevapla onlara teşekkür etmekten başka. Lütfen yorumunuzu tekrar okuyunuz.
Joseph Smith

Yanıtlar:


79

Jar dosyamı şu şekilde çalıştırdığımda bu sorunla karşılaştım:

java -jar TestJar

onun yerine

java -jar TestJar.jar

.Jar uzantısı eksikse de bu soruna neden olur.


1
Bu doğru cevap. .Jar uzantısı jar dosyası adına eklenmelidir.
Abhijay Kumar

10
Her zaman doğru cevap değil, ekliyorum ve işe yaramıyor.
Alan B

Benim durumumda, konsoldaki bir klasör iken bir dosya olduğunu düşündüm. Jar dosyası aynı ada sahip bir klasördeydi.
Willy Makend

58

Sabit

Sadece farklı bir klasöre yerleştirdim ve işe yaradı.


62
Birisi bunun neden olduğunu açıklayabilir mi?
Anastasios Andronidis

7
Sanırım bir dosya izinleri sorunu olabilir, ancak toplam tahmin.
Aiden Fry

2
WIndows'ta da cygwin kullanarak benzer bir sorun yaşadım. Yani cygwin Windows kullanarak farklı yollar kullanır /cygdrive/c/vs C:\ Ben realpath --relative-to=$(pwd) path/to/jarfilebunu kullanarak sabit Bu yüzden her zaman göreli bir yol iso kullanarak zorlar/cygdrive/c/.../path/to/jarfile
Rik

1
Aynı sorunu yaşadım, kavanozumla da, yanlışlıkla kavanozun yolunu yanlış yazdım
Ori Wiesel

1
@Rik Yorumunuz, dos yollarında ve cygwin yolundaki java dosyasında çalışmaz, ancak yararlıdır. Buradaki çözümjava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n

32

[Muhtemelen yalnızca Windows]

Kavanozunuz geçerli çalışma dizininde olsa bile yoldaki boşluklara dikkat edin. Örneğin, benim için bu başarısız oldu:

java -jar myjar.jar

Kavanoza tam, alıntılanmış yolu vererek bu sorunu çözebildim:

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

Kredi beni doğru yola koymak için bu cevaba gider ....


Bunun için teşekkürler. Farklı bir dizinden çalıştırmaya çalışıyorsanız, Linux'ta da tam yol vermeniz gerekir.
Pubudu

Bu cevap kısmen bu soruya verilmiş bir cevabın kopyasıdır. Bu aynı yöntemle daha önceki yanıttır: tam alıntı yolu. Eyl 6 '15 @benez
sophievda

18

Windows'da CygWin altında bu sorunu yaşadım. Java (Cygwin'ın yolları anlamıyor başka bir yerde okudum /cygdrive/c/some/diryerine C:\some\dir) - yerine göreli bir yol kullanılır böylece: ../../some/dir/sbt-launch.jar.


CygWin'de bu sorunu yaşıyordum! Sonsuza dek teşekkür ederim!
Rhyuk

1
Cygwin yolları yerine windows formatlı yolları kullanmak için cygwin'e ihtiyaç duyduğunuz durumlarda, yolu windows eşdeğerine dönüştürmek için cygpath -w / path / here komutunu kullanabilirsiniz.
Jason Slobotski

@JasonSlobotski bahşiş için teşekkürler, yorumunuzun kendi başına bir cevap olması gerektiğini düşünüyorum.
Roberto Bonvallet

14

Jar dosyasını başlatmaya çalışırken de aynı sorunu yaşadım. Yol bir boşluk içeriyordu, bu yüzden etrafa alıntı yapmak zorunda kaldım. Onun yerine:

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

yazmak zorunda kaldım

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

İçinde boşluklar olduğu için alıntılar benim için hile yaptı. Daha sonra yolu boşluk bırakmadan ve tırnak işaretleri olmadan denedim ve sonra da işe yaradı
Timothy

Anno 2019: Bu çözüm tırnak işaretleriyle bana yardımcı oldu! Tırnak işaretleri ve boşluklar olmadan benim durumumda çalışmıyor.
sophievda

11

Kötü bir USB yapmaya çalışırken aynı problemle karşılaştım ...

Bu komutu admin cmd'de çalıştırmayı denedim

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

Ancak şu hatayı aldım:

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

Çözüm

1. adım

Söz konusu jarfile sağ tıklayın. Özellikler'i tıklayın. Sağ alt köşedeki engellemeyi kaldır sekmesini tıklayın. Dosya indirildi ve bilgisayarımda oluşturulmadığı için engellendi.

2. adım

Cmd'de jar dosyasının bulunduğu dizini değiştirdim.

cd C:\fw\ducky\

Sonra dirdosyanın adını yazdım ve gördümduckencode.jar.jar

Bu yüzden cmd'de dosyaya başvurmak için orijinal komutu değiştirdim .jar.jar

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

Bu komut hata mesajları olmadan çalıştırıldı ve oluşturmaya çalıştığım inject.bin şimdi dizinde bulundu.

Bu yardımcı olur umarım.


Teşekkürler, benim de apktool.jar.jar olarak adlandırıldı
Mayank Kumar

8

Benzer bir sorun yaşadım ve CMD'mi yönetici haklarıyla çalıştırmayı bile denedim, ancak sorunu çözmedi.

Temel şey yapmak emin değiştirmek olduğunu Directory için cmd geçerli dizinde sizin jar dosyası olduğu.

Aşağıdaki adımları uygulayın:

1. masaüstüne jar dosyasını kopyalayın.

  1. CMD'yi çalıştırın

  2. komut yazın cd desktp

  3. sonra yaz java -jar filename.jar

Bu çalışmalı.


Düzenleme : JDK-11'den itibaren ( JEP 330 : Tek Dosyalı Kaynak Kod Programlarını Başlat)

Java 11'den bu yana, java komut satırı aracı doğrudan tek dosya kaynak kodunu çalıştırabilmiştir. Örneğin

java filename.java


5

OSX kullanıyorsanız, indirilen dosyalar imzalanmamış uygulamaların çalışmasını engelleyen bir güvenlik bayrağı ile etiketlenir.

bunu kontrol etmek için dosyadaki genişletilmiş özellikleri görüntüleyebilirsiniz

$ 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

Daha sonra özellikleri ile temizleyebilirsiniz.

xattr -c file.jar


3

Parametre listenizi doğru şekilde sağlamazsanız da olabilir. İşte yaptığım şey:

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

Doğru sürüm yerine:

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

3

bazen / libs klasörü altında bir .jar dosyasını android stüdyosunda sağ tıklatarak (çalıştırmaya veya oluşturmaya) çalıştığınızda olur. android stuio'nun üstündeki açılır menüyü seçebilir ve uygulamaya değiştirebilirsiniz . Bu çalışacak

resim açıklamasını buraya girin


2

Benim için, PATH'deki kat adında yerel Lehçe karakterleri kullanırsanız olur. Belki de sorunun nedeni normal olmayan karakterlerin kullanılması olabilir.


2

Benim özel sorunum sembolik bağlantılar (kısayollar) içeren dizinlerle çalıştığımdan kaynaklandı. Sonuç olarak, denemek java -jar ../../myJar.jarişe yaramadı çünkü olduğumu düşündüğüm yerde değildim.

Göreli dosya yollarını dikkate almamak bunu düzeltti.


2

Benim durumumda, kullanılacak önerilen dosya adı jarFile*.jarkomut satırındaydı. Klasördeki dosya jarFile-1.2.3.jar. Bu yüzden dosyayı yeniden adlandırdım jarFile. Sonra jarFile.jaryerine kullandım jarFile*.jarve sonra sorun çözüldü


Bunu yaptıktan sonra jar dosyasına erişememe sorunu çözüldü.
geliştirin

2

Klasörün adlarında boşluk olduğunda bir Windows makinesinde olabilir. Çözüm "" arasındaki yolu girmek olacaktır. Örneğin:

java -jar c:\my folder\x.jar    --> 
java -jar "c:\my folder\x.jar"

2
bu soruya cevap vermez, daha fazla bilgi istemek için yorumları kullanmalısınız.
awd

2

İzin sorunlarından kaçınmak için yönetici olarak çalıştırmayı deneyin. Bu benim için Win10'da çalıştı.


mac ne olacak?
GvSharma

2

Bu konu yıllar önce ve sorun da giderildi biliyorum. Ancak, Oracle WebLogic 12c ve yükleyicisinin .jarformatta olduğu Oracle OFR'i yüklemeye çalışırken benzer sorunlarla karşılaştığım için gelecekte başka birine yardımcı olacağını umuyorum . Benim durumum için, ya JDK dizinini tırnak içine almamış ya da sadece yazım hatası yapmamıştı.

Run Command Promptyönetici olarak ve bu biçimde komutu yürütün. Yazım hatası varsa cümleyi iki kez kontrol edin.

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

Şöyle bir şey gösteriyorsa , Ortam Değişkenleri JRE 1.xxx is not a valid JDK Java Homeiçin Sistem değişkenlerinin JAVA_HOMEdoğru JDK dizinini gösterdiğinden emin olun . JDK 1.8 veya üstü önerilir (2018).

Burada yararlı bir iş parçacığı, başvurabilirsiniz: Neden weblogic sunucusu yüklenirken JDK c: program dosyalarınızı \ java \ jre7 göstermek geçerli bir JDK değil?


1

TextMate ya da bir şey çift tırnak unicode çift tırnak ile değiştirildiği benzer bir sorun vardı.

Benim SELENIUM_SERVER_JARunicode çift tırnak düzenli çift tırnak içine değiştirmek ve bu benim sorunum çözüldü.


1

bunun nedeni yanlış yolda dosya arıyorsanız 1. dosyayı yerleştirdiğiniz klasörün yolunu arayın 2. cmd dizin cd değiştirmek doğru yolu kullanın


1

NetBeans kullanıyorum ve aynı sorunu yaşadım. Projeyi derleyip temizledikten sonra programım çalıştırılabilir oldu. Java belgeleri, derleme / temizleme komutunun projeyi sıfırdan yeniden oluşturmak ve geçmiş derlemeleri kaldırmak için olduğunu söylüyor. Umarım bu yardımcı olur. Ayrıca, belgeleri de okurdum. Oracle'ın NetBeans ve Java öğrenme rotaları vardır. Çok yararlı. İyi şanslar!



1

Sonunda jar dosyamı JDK'm ile aynı klasöre yapıştırdım, böylece yolları dahil etmek zorunda kalmadım. Ayrıca komut istemini yönetici olarak açmak zorunda kaldım.

  1. Komut İstemi'ne sağ tıklayın ve "Yönetici olarak çalıştır"
  2. JDK'nızı kaydettiğiniz dizine gidin
  3. Komut istemine şunu yazın: java.exe -jar <jar file name>.jar


0

Yönetici ayrıcalıkları altında çalıştırmayı denediniz mi? yani, "Farklı Çalıştır" komutunu çalıştırmak ve uygun yönetici kimlik bilgilerine sahip yöneticiyi seçmek

benim için çalıştı


0

Bunu deniyordum:

Dosyayı okuduktan, yazdıktan sonra ayrıcalıkları yürütün:

chmod 777 java-repl.jar

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

Bla bla erişilemiyor ..., bu Mac OS'de olsa

Bu yüzden denedim:

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


0

Bu "jarfile'a erişilemiyor" şeklinde çalışmadı

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

Bu işe yarıyor

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

Fark, OneWireViewer.jar'ın önündeki tek boşluk, tırnak işaretleri ile çevrili olmasına ve hatta başka boşluklara sahip olmasına dayanmıyor.


0

Benim için olur çünkü ben bu kavanoz oluşturmak için kullanılan derlenmiş java sürümü (8) ile değil varsayılan java sürümü (7) ile çalıştırın.

Ben de kullandım:

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

Java 7 sürümü yerine:

java -jar myjar.jar

0

WSL üzerindeyseniz ve aşağıdaki bir kılavuzu izliyorsanız şunu söylüyor:

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

java.library.pathKısmen vermiş olsanız bile, tam yolu belirtmeniz gerekir .

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

0

Bu izin sorunudur, dizinin Kullanıcı altında olup olmadığına bakın. Bu yüzden başka bir klasörde çalışıyor!


-1

ilk önce bir değişken oluşturdum %JAVA_HOME% :

Dosyayı indirirken, UNBLOCK TAByukarıda "maartencls" yayınında gösterildiği gibi dosya özelliklerini kontrol ettiğinizden emin olun .

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

Umarım bu sorunu çözer :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.