我采用了Factual API的java实现(参考http://developer.factual.com/)并制作了一个事实的JAR文件。为此,我在eclipse中打开了一个带有实际java文件的新项目,然后导出到一个新的jar文件。
我把jar文件放在coldfusion安装的/WEB-INF/lib/文件夹中。
在重新启动Coldfusion之后,我尝试创建一个新的cfobject,比如so
<cfscript>
// Initialize the Java class.
factualClass=CreateObject("java", "src.main.java.com.factual.driver.Factual");
</cfscript>
我收到一个错误,指示它找不到Factual类。
有人能给我一些指导吗?
(评论摘要)
听起来,您可能正在导出源文件(即*.java),而不是已编译的类文件(即*.class)。在Jar导出向导中,请确保选择"导出生成的类文件和资源"选项。(要在expi之前自动编译项目源,请启用设置:JAR packaging>Build projects if not Build automatically选项)。如果您愿意,也可以在MVN存储库中找到预编译的jar。
将该jar文件放在我的coldfusion安装的/WEB-INF/lib中/文件夹
CF10+还支持通过新的应用程序级别设置THIS.javaSettings
动态加载类。
// Initialize the Java class.
factualClass=CreateObject("java", "src.main.java.com.factual.driver.Factual");
作为一个兴趣点,src/main/java/
实际上并不是库类名的一部分。它是Maven项目中使用的标准目录结构。它可能在导出源时包含,但不包含已编译的类。
您总是可以通过检查API即javadocs或查看其中一个源文件来验证正确的路径和类名。包声明总是在源文件的顶部,例如在src/main/java.com/facture/driver/factual.java的第1行:
package com.factual.driver; // ie "com.factual.driver"
以及第39行的类声明。
public class Factual { // ie "Factual"
组合后,可以为您提供与createObject:一起使用的确切(区分大小写)路径
factualClass=CreateObject("java", "com.factual.driver.Factual");