2009-02-04 19 views
47

Giriş seviyesi programcısıyım, lütfen cevaplarınızda açıklayıcı olun.C# içinde bir .jar java kitaplığı API'sini kullanın.

C# .net uygulamasında .jar dosyası olarak verilen bir Java API'sini kullanmaya çalışıyorum. Çok fazla Java bilmiyorum ama bu .jar dosyası çalıştırmayı denediğimde "ana sınıf manifest niteliği yok" diyor, bu onun bir kütüphanesi anlamına geliyor? Bu Java API'sı ayrıca kütüphaneyi nasıl kullanacağınızı gösteren bir .java dosyası ile birlikte gelir ancak kodu .jar içinde göremiyorum.

Bu sitede this question buldum ve yanıtlardan biri, "Basit bir şekilde java sınıflarınızı jar dosyası için paketleyebilirsin sonra C# işleminde yürütme ve IO akışını eşleştir için Process sınıfını kullanabilirsiniz." C# içindeki Process sınıfına yarı aşina oldum ama C# .net projemde bir Java kütüphanesi kullanmak için nasıl kullanabileceğimi anlamıyorum.

Bu mümkün mü? ya da bu cevap yanlış mıydı?

Öyleyse, C# uygulamamdaki .jar kitaplığını nasıl kullanabileceğimi açıklayabilir misiniz?

cevap

65

Bunu IVKM.Net kullanarak yapabilirsiniz. IVKM.NET ikvmc adlı bir uygulama içerir. İşte bu araç için belgeler var:

http://www.ikvm.net/userguide/ikvmc.html

bir Jar içine java kodu derlemek kullanın.

myCode.jar

ikvmc

sizin kavanoz bir ana() işlevi içeriyorsa

, bu CLR üzerinde çalıştırılabilir bir exe çevrilecektir:

Sonra ikvmc programını çalıştırın. Aksi takdirde dll’lere dönüştürülür. Projenizde dll'leri kullanmak için bunları yalnızca Visual Studio'da referans olarak ekleyin ve Java'da kullanabileceğiniz aynı API, .Net uygulamanızda erişilebilir olacaktır.

Ayrıca, ikvmc'den IKVM.GNU.Classpath.dll dll dosyasını ekleyebilir ve uygulamanızda standart java sınıf kitaplıklarını kullanabilirsiniz.

+0

teşekkürler. bir kez .dll ve onu projeme aktarıyorum, Pinvoke kullanarak kütüphanenin işlevini çağırmalı mıyım? – timmyg

+1

Pinvoke kullanmanıza gerek yoktur. Tıpkı C# ile yazıldığı gibi, sadece api çağırmanız gerekir. –

+1

"CIL'de Çalıştır" seçeneğini "CLR'de Çalıştırma" olarak değiştirmelisiniz – LDomagala

4

IKVM'a bir göz atın ... size bazı düzeylerde etkileşim sağlamak için araçları vardır. Java API dediğinizde, sadece bir işlev yerine jargondan bazı işlevleri çağırmak istediğinizi varsayalım, bunun yerine

+0

Doğru, .jar çalışmaz, "Ana Sınıf bildirim özniteliği ... 'den yüklenemedi" yazan bir hata iletisi bildiriyor. Bir kez .jar'a dönüştürdüğümde, .jar kullanarak java kodlu örnekle aynı şekilde kullanmaya çalışacağım. – timmyg