【问题标题】:ColdFusion 8 JavaLoader LingPipe or OpenNLP, how do I init it?ColdFusion 8 JavaLoader LingPipe 或 OpenNLP,我该如何初始化它?
【发布时间】:2014-08-27 23:55:31
【问题描述】:

我正在使用 JavaLoader.cfc。我以前使用过它,但无法理解如何让这些库之一响应我。

我已将 JAR 文件放入我的 java 文件夹中。我创建了“JavaLoader”对象并将“路径”传递给它。但它一直说它在 jar 文件中找不到类名或类似的东西......

找不到请求的类。请求的类 opennlp.tools.sentdetect在加载中找不到 罐子/目录。

我知道在 Java 以及如何将它与 ColdFusion 结合时,我完全不了解。如果我知道我可能可以使用任何 JAR 文件,我敢肯定这是愚蠢的......

如果可以的话请帮忙!

【问题讨论】:

  • 如果您共享代码以加载 JavaLoader 并初始化它以及您传递的路径中包含的 Jar 文件,这将有所帮助。

标签: coldfusion


【解决方案1】:

我检查了 OpenNLP javadocs here,似乎 opennlp.tools.sentdetect 没有构造函数,这就是它返回错误的原因。你想调用哪个方法?

我已经做了一个简单的例子来检测句子,但为此你需要获得可用的英文模型here

<cfscript>
// load NLP jar libraries
sourcePaths = [expandPath("opennlp-tools-1.5.0\opennlp-tools-1.5.0.jar"),expandPath("opennlp-tools-1.5.0\lib\maxent-3.0.0.jar"),expandPath("opennlp-tools-1.5.0\lib\jwnl-1.3.3.jar")];
javaloader = createObject("component", "javaloader.JavaLoader").init(sourcePaths);

// load our model (here english model)
// you can create your own model using the TrainerTool
inputFile = ExpandPath("en-sent.bin");
modelIn = createObject("java", "java.io.FileInputStream").init(inputFile);
model = javaloader.create("opennlp.tools.sentdetect.SentenceModel").init(modelIn);

// let's try the sentence detector
sentenceDetector = javaloader.create("opennlp.tools.sentdetect.SentenceDetectorME").init(model);
sentences = sentenceDetector.sentDetect("I love working with Java in ColdFusion! CF rocks, really! But sometimes working with Java libraries is a bit tricky :-)");
</cfscript>

<cfdump var="#sentences#">

玩得开心! :-)

【讨论】:

  • 正是我所需要的。好问候!
  • 似乎opennlp.tools.sentdetect 没有构造函数 更具体地说,它是path of a package,不是一个实际的类,这就是它不起作用的原因。 createObject 需要 class 的完整路径。
【解决方案2】:

这里也没有 Java 专家,但我确实按照 Rays 的说明让 POI 工作了 here 有两篇文章。他介绍了如何设置 Javaloader

【讨论】:

    【解决方案3】:

    您的问题可能只是在 JAR 的路径中。还要确保将 JAR 文件的路径作为数组中的字符串传递。

    提示 1:您不需要将文件放在您的 java 文件夹中。能够将 JAR 文件放在任何目录(可能是应用程序根目录)中,这就是 JavaLoader 赋予您的能力。否则,您最好不要使用 JavaLoader,而只需将 JAR 文件放入 JVM 类路径中。

    提示 2:确保将 JavaLoader 初始化到服务器范围内,因为它会显着减少您的开销。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多