【问题标题】:Could not find the ColdFusion component or interface javaloader.JavaLoader找不到 ColdFusion 组件或接口 javaloader.JavaLoader
【发布时间】:2016-12-09 16:07:50
【问题描述】:

不确定为什么这不适用于我的本地。它在我的远程测试环境中工作。当前代码:

<cfset local = {}>
<cfset local.paths = []>
<cfset local.paths[1] = GetDirectoryFromPath(GetCurrentTemplatePath()) & "lib\jsoup-1.7.2.jar">
<cfset local.javaloader = createObject("component", "javaloader.JavaLoader").init(local.paths)>
<cfset jSoupClass = local.javaloader.create( "org.jsoup.Jsoup" )>

&lt;cfset local.javaloader....&gt; 上的错误

有什么想法吗? #local# 正在到达正确的jsoup-1.7.2.jar

浏览器抛出错误:

coldfusion.runtime.CfJspPage$NoSuchTemplateException: Could not find the ColdFusion component or interface javaloader.JavaLoader.
    at coldfusion.runtime.TemplateProxyFactory.getResolvedFile(TemplateProxyFactory.java:1407)
    at coldfusion.runtime.TemplateProxyFactory.getTemplateFileHelper(TemplateProxyFactory.java:1642)
    at coldfusion.cfc.ComponentProxyFactory.getProxy(ComponentProxyFactory.java:51)
    at coldfusion.runtime.CFPage.CreateObject(CFPage.java:6352)
    at coldfusion.runtime.CFPage.CreateObject(CFPage.java:6371)
    at cfquote_htmlparser2ecfm1800247286.runPage(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\modules\tools\quote_htmlparser.cfm:8)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:251)
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:737)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:573)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:3698)
    at cfquoteadder2ecfm646267101.runPage(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\modules\tools\quoteadder.cfm:24)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:251)
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:737)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:573)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:3698)
    at cfmodules2ecfm877363338._factor1(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\modules.cfm:47)
    at cfmodules2ecfm877363338._factor5(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\modules.cfm:45)
    at cfmodules2ecfm877363338._factor9(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\modules.cfm:31)
    at cfmodules2ecfm877363338._factor10(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\modules.cfm:28)
    at cfmodules2ecfm877363338.runPage(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\modules.cfm:1)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:251)
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:737)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:573)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:3698)
    at cfbody2ecfm524231656._factor11(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\body.cfm:246)
    at cfbody2ecfm524231656.runPage(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\body.cfm:1)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:251)
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:737)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:573)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:3698)
    at cfportal2ecfm1302691009.runPage(C:\Users\Charles\Documents\GitHub\MilestonePortal\MilestonePortalV2\portal.cfm:144)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:251)
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:737)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:573)
    at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
    at coldfusion.filter.IpFilter.invoke(IpFilter.java:45)
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:505)
    at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:43)
    at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
    at coldfusion.filter.PathFilter.invoke(PathFilter.java:153)
    at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30)
    at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
    at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
    at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
    at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:60)
    at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
    at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
    at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
    at coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:151)
    at coldfusion.CfmServlet.service(CfmServlet.java:219)
    at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
    at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
    at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:536)
    at org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:898)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

【问题讨论】:

  • (编辑)听起来就像它所说的那样,即它找不到JavaLoader,因为createObject 路径不正确/无效。该 .cfc 实际位于何处?
  • @Leigh 你指的是哪个 .cfc?
  • 自定义组件,JavaLoader.cfc。听起来 .cfc 在您的 createObject 代码所说的地方不存在。 This is how CF resolves component paths.
  • @Leigh 说的很对,我没有看到任何类型的 JavaLoader.cfc。感谢您指出这一点。
  • (编辑)NP。它是一个不是核心组件,所以...如果你不单独下载它,那么它肯定不存在:-) BTW,你用的是CF10+吗?如果是这样,就像我在下面提到的那样,使用this.javaSettings 会更简单。

标签: java coldfusion


【解决方案1】:

环境变化和 NoSuchTemplateException 这两个提示建议您查看 Coldfusion Administrator 中的映射。您可能忽略了 Javaloader 映射或在当前环境中错误地定义了它。

假设您使用的是Mark Mandel's Javaloader,并且您将其解压缩为文件夹javaloader_v1.1。然后你应该将映射定义为:

逻辑路径: /java加载器

目录路径: {absolute_path_to_folder_javaloader_v1.1}/javaloader/

【讨论】:

    【解决方案2】:

    你真的有一个名为“javaloader.Javaloader”的CFC吗?对我来说,这听起来像是一个 Java 类。试试这个:

    <cfset local = {}>
    <cfset local.paths = []>
    <cfset local.paths[1] = GetDirectoryFromPath(GetCurrentTemplatePath()) & "lib\jsoup-1.7.2.jar">
    <cfset local.javaloader = createObject("java", "javaloader.JavaLoader").init(local.paths)>
    <cfset jSoupClass = local.javaloader.create( "org.jsoup.Jsoup" )>
    

    还请记住,Java 类和文件名区分大小写。所以你需要精确地匹配它们。

    【讨论】:

    • 试过你的代码,现在抛出一个新的不同的错误Object Instantiation Exception. Class not found: javaloader.JavaLoader
    • (编辑)@Charles - 它绝对是一个组件,但就像 Mark 所说,听起来你的系统上没有找到它 - 要么是因为你没有 install it 要么可能你把它与您在createObject() 通话中指定的位置不同。旁注,如果您使用的是 CF10+,则改用this.javaSettings 会更简单。
    • 那么肯定是一个组件。我的回答不好。你有一个包含 javaloader.cfc 的名为 javaloader 的文件夹吗?这就是我对 createobject("component","javaloader.javaloader") 或 cfadmin 或您的 application.cfc 文件中的映射的期望。
    【解决方案3】:

    我在 Application.cfc 中的本地路径未找到但在生产服务器上工作时遇到类似问题。我本周向 Adob​​e 报告了这件事。一位同事也有同样的问题,尤其是相对路径。 CF 11 更新 10。

    尝试使用带有 // 而不是 GetDirectoryFromPath 的完整路径来查看它是否有效。

    此外,请注意任何 HTML 注释标记(2 个破折号)代替 CF 注释标记。

    这曾经在您的本地工作过吗?如果有,发生了什么变化?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2018-04-03
      相关资源
      最近更新 更多