Eklenti Hata Ayıklama

Eklentinizdeki hataları keşfetmek zorlaştığında, yaptığınız her değişiklik ve günlük çıktıların karmaşıklığında boğulabilirsiniz ve hata ayıklama çok sıkıcı olabilir. Bu nedenle, bu kısım eklentinizi Java’nın hata ayıklama yeteneklerinden yararlanmak için nasıl yararlanabileceğinizi açıklayacak.

Çalışma Alanınız Hazırlanıyor

Hem Sponge’u hem de IDE’nizden eklentinizi çalıştırdığımız için çalışma alanınızdan bir proje gibi hangisini kullanmak istediğinize bağlı olarak ya SpongeForge ya da SpongeVanilla kodunu içeri aktarmanız gerekecektir. Bunu yapmak için yönergeleri ilgili projenin GitHub sayfasında bulabilirsiniz.Burada ilerlemeden önce bu yönergelei izleyin.

Şimdi sizin plugin projenizin yeni oluşturduğunuz SpongeForge/SpongeVanilla projesinde görünür olduğundan emin olmalısınız. Gerekli adımlar IDE’inize bağlıdır.

IntelliJ IDEA

IntelliJ’de her projenin kendi çalışma alanı (ları) vardır. Projenizi ** Sponge (Vanilla) ** projesinde görünür kılmak için bir * Modül * olması gerekir. Projenizi zaten :doc: workspace / idea bölümünde tanımlanan şekilde oluşturduğunuzu varsayarsak, aşağıdaki adımları izleyerek içe aktarın.

  • SpongeVanilla/SpongeForge projesini açın.
  • ``New``i takip eden ``File``a ve sonra ``Module from Existing Sources…``a tıklayın.
  • Eklenti projenizin dizinine gidin.
    • Eğer Gradle kullanıyorsanız, build.gradle dosyasını seçin, bir sonraki diyaloğun içindeki Use auto-import` seçeneğini işaretleyin ve onaylayın.
    • Aksi takdirde, sadece dizinin tamamını seçin ve “Bitir” i tıklayın.
  • Finish’e basın.

Tüyo

Henüz plugin’nizi oluşturmadıysanız, Module from Existing Sources... yerine Module... tıklayınız, ardından projenizi aşağıdaki diyaloğa takiben oluşturunuz.

Tutulma

Projenizi burada tarif edildiği gibi girin: Tutulma ayarlama. SpongeVanilla/SpongeForge projenizde aynı çalışma alanında oldupu sürece projeniz görünür olacaktır.

Sponge sınıf yoluna eklenti eklemek

Bunun arkasındaki fikir, Sponge’yi IDE’nizden normal gibi başlatacağımızdır. Bununla birlikte, aradaki fark, eklentinizi sınıf yoluna ekleyeceğiz. Sponge varsayılan olarak, sınıf yolunda bulunan tüm eklentileri yükleyeceğinden, eklenti projesini Sponge’nin sınıf yoluna ekleyerek, her değişiklikten sonra eser dosyasını yeniden oluşturmanız ve sunucu dizininize kopyalamanız gerekliliğinden kurtulursunuz.

İlk olarak Sponge `README.md'de gösterilen Çalıştır / Hata Ayıklama Yapılandırma(lar)ınızı uygun bir şekilde ayarladığınızdan emin olmanız gerekir.<https://github.com/SpongePowered/SpongeForge/blob/stable-7/README.md#running>`_

Ardından, projeyi sınıf yolunuza dahil edecek şekilde Çalıştır / Hata ayıklama Yapılandırmasını düzenlemeniz gerekir. Bunu yeniden nasıl yapacağınız, IDE’nize bağlıdır:

IntelliJ IDEA

  • Proje Yapınızı açın.
    • ``Project Structure…``dan sonra ``File``a tıklayın.
    • Veya Search ikonunun yanında IDE’nin sağ üst köşesindeki ``Project Structure``ikonuna tıklayın.
  • Modules``a tıklayın.``SpongeForge veya SpongeVanilla yı (seçiminize bağlı olarak) genişletin.
  • SpongeForge_main veya SpongeVanilla_main in seçili olduğundan emin olun.
  • Sağ sütundaki ``Dependencies``i seçin.
  • Sütunun altındaki (Add) de ` +` sembolüne tıklayın ve ``Module Dependency``i seçin.
  • ``yourplugin_main``i seçin.
  • Listeye eklendikten sonra modüldeki Export seçeneğini kontrol ETMEYİN.

Uyarı

Due to a bug in IntelliJ (IDEA-194641), any dependencies that your plugin has (e.g. the Kotlin standard library, or Gson) will not be added to the classpath using the above method. This results in a ClassNotFoundException when your plugin tries to access one of these classes, even though it successfully compiled against that class.

This issue only affects running your plugin from IntelliJ as a module. Your final built plugin jar will run normally in both IntelliJ and a production server.

If your plugin has external dependencies, you’ll need to follow these steps in order to run it directly from IntelliJ:

  • Create a new Java module with File -> New -> Module.... Name it SpongeForgeContainer.
  • Open the module settings for SpongeForgeContainer as described above
  • In the dependency settings for SpongeForgeContainer, add a module dependency on SpongeForge_main
  • Edit your server run configuration. Change Use classpath of module: from SpongeForge_main to SpongeForgeContainer

You can leave all of your settings unchanged, including SpongeForge_main’s dependency on your plugin module. Now, all of your plugin’s dependencies should be added to the classpath when you run the server.

Tutulma

  • Kendi Çalıştır/Hata ayıkla Düzenlemenizi bulun.
    • ``Run``a ve ardından ``Run Configurations…``a tıklayın
    • Veya Çalıştır/Hata ayıkla ikonunun yanısıra aşağı indirme okuna tıklayın ve sonra ayrı ayrı Run Configurations... veya Debug Configurations... girin.
  • Sol taraftaki Sponge (sunucusu) için kendi Çalıştır/Hata ayıkla konfigürasyonunuzu seçin.
  • Classpath sekmesine geçin.
  • Add Projects... butonundan sonra ``User Entries``i seçin.
  • Eklentinize uygun projeyi seçin.
  • OK butonuna tıklayınız.
  • Sağ alt köşedeki Apply butonuna tıklayın.

Yapılandırmayı Çalıştırma

After you’ve followed the previous steps, you should be ready to start debugging. If you start your server from your IDE, its working directory will be the run directory in your SpongeForge/SpongeVanilla project. All the files usually created by a server (worlds, configs etc.) will be stored in that run directory and persist over multiple runs of your local test server, just as if you manually copied a server .jar to the run directory and started it from there.

IntelliJ IDEA

Çalıştır / hata ayıklama yapılandırmasını çalıştırmak için Yeşil sağ ok işaretine basmak yerine sağdaki Yeşil simgesini tıklayın, “Hata ayıklama”.

Tutulma

Rather than pressing the green right-pointing arrow to run your Run/Debug configuration, click the drop-down arrow of the Debug icon (the one displaying a bug) and click your Test (Server) configuration. If it doesn’t appear in the drop-down menu, click Debug Configurations. Select Test (Server) configuration and hit the Debug button on the bottom left.

Hata ayıklama kullanımı

Sunucunuz (ve Plugin’iniz) Hata Ayıklayıcı’da çalıştığı için tuttuğu özellikleri kullanabilirsiniz. Bunların en önemlileri aşağıda kısaca açıklanmaktadır, ancak bunlar Sponge’ın özellikleri değil, IDE’nizin kullandığı Java Debugger.

Kesme Noktaları

Kesme noktaları, koda daha yakından bakmak için kullanışlı bir araçtır. Bir kesme noktası bir kod satırı veya bir işlevin başında ayarlanabilir. Bir kesme noktasına erişirken, hata ayıklayıcı kod yürütülmesini durduracak ve IDE, geçerli kapsamdaki tüm değişkenlerin içeriğini incelemenize izin veren bir görünüm açacaktır. IDE’nizin hata ayıklama görünümünde buna uygun düğmeye basmadığınız sürece kod yürütmesi devam etmez.

Hata ayıklama devam ederken kesme noktaları da eklenebilir, kaldırılabilir veya geçici olarak devre dışı bırakılabilir.

Tüyo

Tek bi sunucu işareti verilmiş zamandan daha fazla zaman alırsa, bekçi bu sunucunun çöktüğünü düşünür ve onu zorla kapatır. Kırılma noktaları ile çalışırken bu meydana gelebilir, bu nedenle test ortamlarınızı server.properties dosyasını ve max-tick-time değerini çok büyük bir sayıya ayarlamanız tavsiye edilir ( bir işaretin alabileceği milisaniye miktarı) veya ``-1``( Bekçi’yi komple etkisiz kılmak için).

IntelliJ IDEA

Bir kesme noktası eklemek veya çıkarmak için, sadece editörünüzün solundaki boş alana sol tıklayın.

Alternatif olarak, imlecinizi kesme noktasının eklenmesini veya kaldırılmasını istediğiniz satıra getirin ve sonra `` Çalıştır’ı tıklayın ve ardından `` Satır Kesme Noktasını Aç / Kapat ‘’ ı tıklayın.

Tutulma

Bir kesme noktası eklemek veya kaldırmak için, yalnızca düzenleyicinin solundaki boş alanı sağ tıklatın ve ardından `` Toggle Breakpoint`` seçeneğini tıklayın.

Alternatif olarak, imlecinizi kesme noktasının eklenmesini veya kaldırılmasını istediğiniz satıra getirmesini sağlayın ve ardından `` Çalıştır’ı tıklayın ve ardından `` Kesme Kırpma Değiştir ‘’ e tıklayın.

Kod Güncellemesi

Hata ayıklayıcı’nın diğer önemli özelliği, kod değiştirme sayesinde her küçük değişiklik için sunucunuzu yeniden başlatmanızın gerekmemesidir. Bu, hata ayıklayıcıda çalışırken yalnızca kod bölümlerini yeniden derleyebilirsiniz. Bununla birlikte, birkaç sınırlama vardır, bunlardan en önemlileri şunlardır:

  • Methodları oluşturamaz veya kaldıramazsınız.

    • Yöntemlerdeki değişiklikler, yöntemin içindeki * kodu ile sınırlıdır. İmzasını değiştiremezsiniz (adı, dönüş türü ve parametre türleri anlamına gelir)
  • Sınıfları silemezsiniz.

    • Bir sınıfın adını, üst sınıfını veya uyguladığı arabirimlerin listesini değiştiremezsiniz.
    • Sınıf ekleyebilirsiniz. Bununla birlikte, yapı oluşturulduktan ve çalıştırıldıktan sonra, sınıf yukarıdaki kuralları izler.

Bu işlevi test edebilirsiniz: Eklentinize sadece bir kelime yazan basit bir komut verin,``Sponge``gibi. Ardından kaydedin ve sunucuya yukarıda anlatıldığı gibi başlayın. Sponge i çıkartacak komutu çalıştırın. Şimdi komutu konsola farklı bir kelime yazmak üzere değiştirin, dosyayı kaydedin. Bir değişiklikten sonra, Çalışan programdaki değişiklikleri hotswap için aşağıdaki gibi yapın:

IntelliJ IDEA

  • IDE’nin üstünden Run menüsünü açın.
  • İlk kategori sonunun altındaki “Değiştirilen Sınıfları Yeniden Yükle” ye tıklayın.

Tutulma

Hiçbir işlem gerekmedi. Dosyayı kaydettiğiniz anda yeniden oluşturulur ve o anda çalışmakta olan hata ayıklama işlemiyle otomatik olarak çalışırken değiştirilir. Bu varsayılan varsayılan davranışı değiştirmediğiniz sürece, el ile çalıştırmayı tetiklemek zorunda kalmazsınız.