2016-08-17 77 views
0

我使用的java包裝MaleOrang,這是一種比較流行的電子郵件營銷網站。我加入了MaleOrang jar文件到我的項目的類路徑和使用下面的例子來連接到MailChimp和用戶添加到我的帳戶:如何在Java項目中使用Kotlin編寫的MailChimp包裝

public void RunMailChimp() throws Exception { 
     MailchimpClient client = new MailchimpClient(apiKey); 
     try { 
      EditMemberMethod.CreateOrUpdate method = new EditMemberMethod.CreateOrUpdate(listId, Email); 
      method.status = "subscribed"; 
      method.merge_fields = new MailchimpObject(); 
      method.merge_fields.mapping.put("FNAME", firstName); 
      method.merge_fields.mapping.put("LNAME", lastName); 

      MemberInfo member = client.execute(method); 
      System.err.println("The user has been successfully subscribed: " + member); 
     } finally { 
      client.close(); 
     } 
    } 

以下錯誤彈出雖然。 MaleOrang背後的人說他的包裝是用Kotlin語言編寫的,我沒有經驗,但我認爲這個錯誤與此有關。任何人都可以提供有關如何工作的見解?

Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics 
    at com.ecwid.maleorang.MailchimpClient.<init>(MailchimpClient.kt) 
    ... 
+2

下載'kotlin-runtime.jar' –

+1

請參閱https://discuss.kotlinlang.org/t/java-lang-noclassdeffounderror-kotlin-jvm-internal-reflection/287 –

+0

我喜歡簡單的修復。謝謝,這擺脫了異常,但現在有另一個:'NoClassDefFoundError:kotlin/text/Charsets'。 Kotlin文學似乎隱藏得很好。你知道這個依賴關係可能在哪裏嗎? – corpico

回答

1

我覺得你把整件事情弄錯了。

Java庫不應該被下載爲.jar。相反,一個必須使用構建和依賴管理工具。

自述文件提到,MaleOrang可通過MavenCentral訪問。

將Maven或Gradle添加到您的項目中,然後將com.ecwid:maleorang:3.0-0.9.2作爲依賴項添加到配置文件中。

通過這種方式,您可以在心臟中使用任何Java庫而不會對其依賴關係(隨着時間的推移可能會發生變化)發生衝突。

+0

你能否詳細說明一下。對不起,我以前從未使用過Maven,並且正在努力學習。我在Netbeans中只有一個普通的Java項目,並且一直添加Jar文件以使用第三方庫。有沒有辦法(或錯誤的方式)打包MaleOrang及其所有依賴項,以便我的項目可以使用它? – corpico

+0

確實有一種方法可以將所有內容打包在一個文件夾中,但它用於在特殊情況下分發,而不是用於解決NetBeans問題 – voddan

+0

我的觀點是您正在嘗試重新擺動流,因此撞上了其他人無法做到的事情。讓你的生活更輕鬆;) – voddan

相關問題