2011-10-24 76 views
4

有我想在我的.NET項目中使用的Java工具(它被稱爲Mallet) http://mallet.cs.umass.edu/download.php使用IKVMC將Java轉換爲.NET庫 - 警告IKVMC0108:不是類文件

要將此工具轉換爲.NET庫,我首先嚐試使用Apache Ant在單個.jar文件中構建它。我已經完成了所有對應於上面鏈接的說明。

  1. 從Mercurial存儲庫下載開發人員發佈。

  2. 下載Apache Ant,安裝JDK,將JAVA_HOME var設置爲使用Apache Ant。

  3. 使用Ant我已經構建了單個mallet.jar文件。

然後我會將使用IKVMC的mallet.jar轉換爲.NET庫。 轉換的時候,我已經得到了很多警告,如:

Warning IKVMC0108: not a class file "cc/mallet/util/tests/TestPriorityQueue$1.cl 
ass", including it as resource 
    (class format error "51.0") 

儘管有這些警告,mallet.dll被創造。但是當我嘗試從我的.NET項目中引用它時,它看起來是「空的」。它沒有任何類或名稱空間。我不會忘記引用IKVM.OpenJDL.Core。

這很奇怪,我在Google中找不到任何相同的問題。

我認爲這個問題是在警告。我從來沒有與Ant合作過,我也不完全瞭解所有的流程。

回答

6

類格式版本51和Java引入了7

IKVM最有可能不支持該版本還和文件名,你在引用匿名內部類的TestPriorityQueue肯定cc/mallet/util/tests/TestPriorityQueue$1.class)點圖書館需要正確地工作。

我的建議是:使用使用-source-target開關設置爲6舊的JDK或至少編譯馬利特(以確保它的編譯爲Java 6)。

+0

Java 7的卸載,Java 6的安裝。得到同樣的錯誤。 –

+0

@ValentinP .: **相同​​*錯誤? *包括*相同的版本號?然後你沒有正確清理(即,還有舊的'.class'文件)。另外:desinatlling Java 7應該沒有必要。將'JAVA_HOME'設置爲指向所需的JDK應該就足夠了。 –

+0

然後確保在重新構建jar文件之前刪除構建目錄中的所有'.class'文件。 –