2016-08-17 87 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

相关问题