“Uygulamayı başlatırken bir hata oluştu” tanısını nasıl koyabilirim?


26

Yazdığım bir my-app.desktopprogram için bir dosya oluşturdum . Çift tıkladığımda, " Uygulamayı başlatırken bir hata oluştu " hata mesajını alıyorum . Sorunun ne olduğu hakkında nasıl daha ayrıntılı bilgi edinebilirim?

İletişim kutusunun "ayrıntılar" bölümüne bir referans gördüm, ancak gördüğümde böyle bir şey yok. Mac'imde olsaydım, herhangi bir hatanın günlüğe kaydedilip kaydedilmediğini görmek için Konsol uygulamasını açardım, ancak Ubuntu'da benzer bir şey öğrenmedim.

(Benzer şekilde başlıklı diğer soruların aksine, bu belirli .desktop dosyasında neyin yanlış olduğunu sormadığımı ve genel olarak nasıl öğreneceğimi bilmek istediğime dikkat edin.)


1
Exec satırını terminalden çalıştırın ve çıktının size ne anladığını görünce masaüstü bilgisayarının iyi olduğundan emin misiniz? belki de kontrol edip terminalden çalıştırmalısınız.
Jacob Vlijm

@Jocob Stderr üzerinde yararlı bir şey koyan "terminalden çalıştırmanın" bir yolu varsa, bu sorunun cevabını oluşturur.
Kevin Reid

1
@terdon Bunu denedim, ve ( sonraki problem olarak) ortamın önemli bir şekilde farklı olduğu ortaya çıktı . Neyin farklı olduğunu tahmin etmemek için normal fırlatma sürecinden nasıl daha fazla bilgi alacağımı bilmek istiyorum .
Kevin Reid

2
@terdon Ampirik olarak, terminalde çalıştırmak farklıdır - Denedim ve farklıydı (özellikle farklı PATH). Normal bir fırlatma ile aynı ortamı nasıl elde edeceğimi bilmek istiyorum, ancak daha fazla tanı bilgisi olan.
Kevin Reid

2
Biraz kapalı, ancak sorunlu olan 10'un 9 katı Exec=yoldaki boşluklar gibi özel karakterlerdir . Unutmayın, Exec=tırnak işaretleri içinde ve Path=tırnak işaretleri olmadan
Barafu Albino

Yanıtlar:


15

İşte kullanabileceğiniz bir numara. Uygulamanız için onu çalıştıracak ve hata çıktısını alacak bir sarmalayıcı komut dosyası oluşturun:

#!/usr/bin/env bash

## Launch 'yourapp' and capture its standard error output
/path/to/yourapp 2>~/myapp.log

Bunu farklı şekilde kaydedin ~/foo.shve çalıştırılabilir hale getirin chmod +x ~/foo.sh. Şimdi, bunun yerine masaüstü başlatıcınızı işaret edin. Gibi bir şey:

[Desktop Entry]
Version=2.0
Type=Application
Exec=/home/kevin/foo.sh
Terminal=true
Comment=My app!

Bu herhangi bir hata mesajını yönlendirecek ~/myapp.logve onları boş zamanlarında inceleyebilirsiniz. 2>>~/myapp.logArdışık hata mesajlarının üzerine yazmak yerine dosyaya eklenmesini istiyorsanız , kullanabilirsiniz .


Bir kenara, bu nedenle $PATHmuhtemelen ayarlarken çünkü farklı olan $PATHin ~/.bahsrcgrafiksel ortamda tarafından okunamaz. Ayrıca, $PATHher yeni bir terminal açtığınızda kurulacağından ve bu ek yük gerektirmediğinden kötü bir fikirdir . Kullanım ~/.profileyerine bu için. Buraya bakınca hangi dosyaların okunduğu ve daha fazla bilgi için hangi dosyanın kullanılması gerektiği hakkında daha fazla bilgi için, buraya bakın .


Sorunu bu şekilde bulamadım, ancak sarıcı çalışıyordu, ben de sarıcıyı çalıştırılabilir olarak tuttum.
Jnisnis Elmeris

16

Bu sorunun cevabını burada buldum : /ubuntu//a/836842

Bunu dene :

desktop-file-validate my-app.desktop

.desktopDosyanızdaki hataları verir . Örneğin mayın döndü:

error: first group is not "Desktrop Entry"

Böylece bir yazım hatası düzelttikten sonra Desktop Entry, komut dosyası başarıyla çalıştırıldı.


7

Terminalde aşağıdaki komutu çalıştırarak:

awk -F= '/Exec=/{system($2)}' your_desktop_file.desktop

Komutunuzda Exec.desktop dosyanızın içinden alana atanmış bir hata olup olmadığını öğreneceğinizden eminim .


5
Ben de benzer bir problemim var. Komutunu yürüttüm ve my.desktop dosyam mükemmel çalışıyor. Ancak çift tıkladığımda, uygulamayı başlatırken bir hata oluştuğunu gösteriyor
Sayantan Koley

Bu cevap biraz tuhaf, çünkü ( kabukta Exec değerini çalıştırmaktan daha fazlasını yaptığını düşünmeme rağmen ) TryExec anahtarının benim sorunum olduğunu anlamamı sağladı .
mirh

3

genellikle terminal (-output) hem uygulamada hem de masaüstü dosyasında size birçok yararlı bilgi verir. Örnek: Eğer uygulamamı terminalden çalıştırırsam, komutu terminale yazarak uygulama başlar.

Ancak, yanlış bir şey varsa, şöyle bir çıktı bekleyebilirsiniz:

Traceback (most recent call last):
  File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa    /qle-2.1.2/code/qle_quicklisteditor", line 4044, in <module>
    MainWindow()
  File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa   /qle-2.1.2/code/qle_quicklisteditor", line 51, in __init__
    self.load_sectons()
AttributeError: 'MainWindow' object has no attribute 'load_sectons'
jacob@Jacobwerkkamer:~/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa   /qle-2.1.2/code$ 

size birçok yararlı bilgi verir, uygulamanızdaki hataya neden olan satır bile. (Bilerek bittim)

Masaüstü dosya ile aynı, sadece .desktop dosyasının dizininde bir terminal açın ve terminale sürükleyin. Örneğin, Exec=satırı bir .desktop dosyasından kaldırırsanız, terminal size çalıştırılacak komutu bulamadığını söyleyecektir.

Uygulamanın hata verdiğini test etmek için, Exec=dizeden sonra ne koyduğunuzu çalıştırın .

Terminal çıkışı genellikle buradaki gibi hata raporlarında çok spesifik ve kullanışlıdır .


2
Bir terminalin nasıl kullanılacağını ve genel olarak programın başlatılmasında nasıl sorun giderileceğini biliyorum. Bu yaklaşımı farz edersek, bilmem gereken şey bir .desktop lansmanının koşullarını terminalde doğru şekilde yeniden üretmektir .
Kevin Reid


0

Gerçekten çözemediğimde, ben:

cd ~/Desktop
ln -s /my/binary/thatIwanttorun mybinary

Ardından oluşturulan ve daha iyi bir grafiğe işaret eden varsayılan simgeye sağ tıklayın.


ve "cd ~ / Desktop" dan sonra bir <cr> olmalı
Tom

-1

Benim için sorun eksik bir Icon=hattı (çalışan bir fırlatıcı için aptalca bir gereksinim gibi görünüyor). Tam .desktop dosyam şimdi şöyle görünüyor:

[Desktop Entry]
Name=LiClipse
Comment=Variant of Eclipse
Exec=/home/tsbertalan/bin/liclipse
Terminal=true
Type=Application
Icon=/home/tsbertalan/usr/liclipse/icon.xpm

Bu, özellikle kullanıcı değişimlerinde güçlü değil, her neyse.

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.