我正在尝试使用Prediction.io提供的Java SDK,但遇到了一些麻烦。基本上,为了使用Java SDK,Java代码如下所示。
import com.google.common.collect.ImmutableMap;
import io.prediction.EventClient;
import org.joda.time.DateTime;
EventClient eventClient = new EventClient(1);
eventClient.setUser("id_1", ImmutableMap.<String, Object>of(), new DateTime("2004-12-13T21:39:45.618-07:00"));
我所做的是:
1)编译Java SDK并将生成的jar文件和依赖项复制到/ opt / railo / lib /
2)使用以下代码管理以获取EventClient类的转储:
<cfset MyTest = CreateObject("java", "io.prediction.EventClient")>
<cfdump var="#MyTest#">
之后我几乎失去了。虽然我已经习惯了Coldfusion,但我是一个全新的Java新手。如何在Coldfusion中使用/复制上面的Java代码?
答案 0 :(得分:2)
完全未经测试,但这样的事情应该做:
首先创建对象:
<cfset MyTest = CreateObject("java", "io.prediction.EventClient").init(1)>
这相当于EventClient eventClient = new io.prediction.EventClient(1);
。您需要init()方法,以便通过使用参数1
调用其构造函数来创建使用CreateObject()加载的类的实例。
创建一个空的ImmutableMap
:
<cfset imClass = CreateObject("java", "com.google.common.collect.ImmutableMap")>
<cfset imObj = imClass.of()>
上面,您正在调用of()
类的静态方法ImmutableMap
,因此您不需要在类上使用init
。如果您愿意,也可以将这两行合并为一行。
现在创建Joda DateTime对象:
<cfset jtObj = CreateObject("java", "org.joda.time.DateTime").init("2004-12-13T21:39:45.618-07:00")>
最后,您可以在EventClient对象上调用该方法:
<cfset MyTest.setUser("id_1", imObj, jtObj)>