Как вызвать класс Java в ColdFusion 11

Я пытаюсь использовать файл класса java с именем Open_NLP, но у меня возникают проблемы.

Это то, что я сделал до сих пор

Добавил файл класса в C:\ColdFusion11\cfusion\wwwroot\WEB-INF\classes
Перезапустил службу CF

Вот как я это называю

<cfset myObj = CreateObject("java", "Open_NLP")>

И это ошибка, которую я получаю

Object instantiation exception.

    An exception occurred while instantiating a Java object. The class must not be an interface or an abstract class. Error: opennlp/tools/util/ObjectStream.

Я неправильно называю класс? Должен ли я предпринять дополнительные шаги, прежде чем я смогу вызвать класс?

Stack Trace
at cfwordcloud2ecfm316238315.runPage(Z:/Sites/xamplifier/views/surveyreporting/wordcloud.cfm:91) at cfcfml2ecfm1851198363$func$INCLUDEANDRETURNOUTPUT.runFunction(Z:/Sites/xamplifier/wheels/global/cfml.cfm:138) at cfrendering2ecfm1331024027$func$INCLUDEFILE.runFunction(Z:/Sites/xamplifier/wheels/controller/rendering.cfm:498) at cfrendering2ecfm1331024027$func$RENDERPAGE.runFunction(Z:/Sites/xamplifier/wheels/controller/rendering.cfm:257) at cfrendering2ecfm1331024027$funcRENDERPAGE.runFunction(Z:/Sites/xamplifier/wheels/controller/rendering.cfm:68) at cfprocessing2ecfm608176556$func$CALLACTION.runFunction(Z:/Sites/xamplifier/wheels/controller/processing.cfm:99) at cfprocessing2ecfm608176556$func$PROCESSACTION.runFunction(Z:/Sites/xamplifier/wheels/controller/processing.cfm:60) at cfrequest2ecfm2131921479$func$REQUEST.runFunction(Z:/Sites/xamplifier/wheels/dispatch/request.cfm:167) at cfindex2ecfm2029461072.runPage(Z:/Sites/xamplifier/wheels/index.cfm:1) at cfindex2ecfm1778521657.runPage(Z:/Sites/xamplifier/index.cfm:1) at cfonrequest2ecfm1108885784$funcONREQUEST.runFunction(Z:/Sites/xamplifier/wheels/events/onrequest.cfm:1) 
 at cfwordcloud2ecfm316238315.runPage(Z:/Sites/xamplifier/views/surveyreporting/wordcloud.cfm:91) at cfcfml2ecfm1851198363$func$INCLUDEANDRETURNOUTPUT.runFunction(Z:/Sites/xamplifier/wheels/global/cfml.cfm:138) at cfrendering2ecfm1331024027$func$INCLUDEFILE.runFunction(Z:/Sites/xamplifier/wheels/controller/rendering.cfm:498) at cfrendering2ecfm1331024027$func$RENDERPAGE.runFunction(Z:/Sites/xamplifier/wheels/controller/rendering.cfm:257) at cfrendering2ecfm1331024027$funcRENDERPAGE.runFunction(Z:/Sites/xamplifier/wheels/controller/rendering.cfm:68) at cfprocessing2ecfm608176556$func$CALLACTION.runFunction(Z:/Sites/xamplifier/wheels/controller/processing.cfm:99) at cfprocessing2ecfm608176556$func$PROCESSACTION.runFunction(Z:/Sites/xamplifier/wheels/controller/processing.cfm:60) at cfrequest2ecfm2131921479$func$REQUEST.runFunction(Z:/Sites/xamplifier/wheels/dispatch/request.cfm:167) at cfindex2ecfm2029461072.runPage(Z:/Sites/xamplifier/wheels/index.cfm:1) at cfindex2ecfm1778521657.runPage(Z:/Sites/xamplifier/index.cfm:1) at cfonrequest2ecfm1108885784$funcONREQUEST.runFunction(Z:/Sites/xamplifier/wheels/events/onrequest.cfm:1) 

java.lang.NoClassDefFoundError: opennlp/tools/util/ObjectStream
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Unknown Source)
    at java.lang.Class.privateGetPublicFields(Unknown Source)
    at java.lang.Class.getFields(Unknown Source)
    at coldfusion.runtime.java.ObjectHandler.Initialize(ObjectHandler.java:35)
    at coldfusion.runtime.java.ObjectHandler.<init>(ObjectHandler.java:30)
    at coldfusion.runtime.java.ReflectionCache.get(ReflectionCache.java:38)
    at coldfusion.runtime.java.JavaProxy.<init>(JavaProxy.java:35)
    at coldfusion.runtime.java.JavaProxyFactory.getProxy(JavaProxyFactory.java:121)
    at coldfusion.runtime.ProxyFactory.getProxy(ProxyFactory.java:65)
    at coldfusion.runtime.CFPage.createObjectProxy(CFPage.java:6168)
    at coldfusion.runtime.CFPage.CreateObject(CFPage.java:6131)
    at coldfusion.runtime.CFPage.CreateObject(CFPage.java:6065)
    at coldfusion.runtime.CFPage.CreateObject(CFPage.java:6040)
    at coldfusion.runtime.CFPage.CreateObject(CFPage.java:5987)
    at cfwordcloud2ecfm316238315.runPage(Z:\Sites\xamplifier\views\surveyreporting\wordcloud.cfm:91)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2986)
    at cfcfml2ecfm1851198363$func$INCLUDEANDRETURNOUTPUT.runFunction(Z:\Sites\xamplifier\wheels\global\cfml.cfm:138)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
    at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2805)
    at cfrendering2ecfm1331024027$func$INCLUDEFILE.runFunction(Z:\Sites\xamplifier\wheels\controller\rendering.cfm:498)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
    at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2805)
    at cfrendering2ecfm1331024027$func$RENDERPAGE.runFunction(Z:\Sites\xamplifier\wheels\controller\rendering.cfm:257)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
    at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2805)
    at cfrendering2ecfm1331024027$funcRENDERPAGE.runFunction(Z:\Sites\xamplifier\wheels\controller\rendering.cfm:68)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
    at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2840)
    at cfprocessing2ecfm608176556$func$CALLACTION.runFunction(Z:\Sites\xamplifier\wheels\controller\processing.cfm:99)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
    at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2805)
    at cfprocessing2ecfm608176556$func$PROCESSACTION.runFunction(Z:\Sites\xamplifier\wheels\controller\processing.cfm:60)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
    at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402)
    at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483)
    at cfrequest2ecfm2131921479$func$REQUEST.runFunction(Z:\Sites\xamplifier\wheels\dispatch\request.cfm:167)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
    at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402)
    at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483)
    at cfindex2ecfm2029461072.runPage(Z:\Sites\xamplifier\wheels\index.cfm:1)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2986)
    at cfindex2ecfm1778521657.runPage(Z:\Sites\xamplifier\index.cfm:1)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2986)
    at cfonrequest2ecfm1108885784$funcONREQUEST.runFunction(Z:\Sites\xamplifier\wheels\events\onrequest.cfm:1)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402)
    at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:108)
    at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:301)
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:462)
    at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:42)
    at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
    at coldfusion.filter.PathFilter.invoke(PathFilter.java:142)
    at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
    at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:78)
    at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
    at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
    at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:58)
    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.CfmServlet.service(CfmServlet.java:219)
    at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    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:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:199)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: opennlp.tools.util.ObjectStream
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    ... 145 more

person Geo    schedule 06.01.2015    source источник
comment
Почему вы используете WEB-INF\classes? Обычно это касается только отдельных файлов .class. Для файлов jar используйте WEB-INF\lib. Можете ли вы опубликовать сообщение трассировки стека?   -  person Leigh    schedule 07.01.2015
comment
После того, как вы переместите банки OpenNLP в ..\lib и перезапустите, вы все еще получаете сообщение об ошибке выше? Кроме того, из части сообщения об ошибке, которую мы видим, это очень похоже на ошибка в вашем предыдущем треде о CF9 - имеет значение?   -  person Leigh    schedule 07.01.2015
comment
Кстати, вы уже читали статью «Создание и использование простого класса Java» от Adobe help.adobe.com/en_US/ColdFusion/9.0/Developing/ Это может быть полезно.   -  person Pankaj    schedule 07.01.2015
comment
@Leigh, моя предыдущая ветка была, когда над ней работал другой разработчик, и я разместил статью для него. В тот раз, если честно, мы заставили его работать случайно, и он был в совершенно другой папке. Я использую только один файл класса, поэтому я добавил его в классы. Мне нужно будет поискать больше, чтобы увидеть, есть ли еще файлы, связанные с этой задачей. Вернемся к вам в ближайшее время   -  person Geo    schedule 07.01.2015
comment
@Geo. Если вы используете OpenNLP, я был бы очень удивлен, если бы был задействован только один файл класса. Так что это вполне может быть отсутствующий класс. Опубликуйте полную трассировку стека, чтобы мы могли выяснить причину. Кстати, то, что вы разместили выше, - это просто стандартная ошибка header. Заголовок обычно бесполезен (просто шаблонный материал) при работе с объектами Java. Истинная причина почти всегда находится в сообщении трассировки стека.   -  person Leigh    schedule 07.01.2015
comment
Я обновлю свой пост сейчас. Также я пытаюсь связаться с первоначальным разработчиком, чтобы немного прояснить ситуацию.   -  person Geo    schedule 07.01.2015
comment
Я пытаюсь воссоздать его с CF 9 на CF 11. Добавлена ​​трассировка стека   -  person Geo    schedule 07.01.2015
comment
(Изменить) Это отсутствует класс. См. Caused by: java.lang.ClassNotFoundException: opennlp.tools.util.ObjectStream... Как вы думаете, почему задействован только один файл класса? Возможно, вы используете какой-то пользовательский класс, созданный поверх проекта OpenNLP, ссылка на который приведена выше? Если да, то это не просто один класс. Это также зависит от банок OpenNLP. Поэтому вам нужно поместить эти банки в папку WEB-INF\lib и перезапустить.   -  person Leigh    schedule 07.01.2015
comment
Я изучаю это сейчас. Спасибо @Leigh   -  person Geo    schedule 07.01.2015
comment
@Leigh Я нашел остальные файлы jar и добавил их в папку / lib, и это работает. У меня есть еще один вопрос, и я не знаю, должен ли я создавать новую тему или нет...   -  person Geo    schedule 07.01.2015
comment
@Geo - Если это не связано с ошибкой выше, возможно, откройте новую тему.   -  person Leigh    schedule 07.01.2015


Ответы (1)


Если это JAR-файл, он должен находиться в каталоге /lib конкретного экземпляра ColdFusion. Расположение зависит от типа установки и платформы. Но это тот же /lib, который содержит другие специфичные для CF jar-файлы — посмотрите в настройках администратора CF в разделе «системная информация» или «сводка настроек» — вы увидите длинный список jar-файлов, которые загружаются при запуске. В том, на который я сейчас смотрю (это мультиэкземпляр cf 9), он находится в instancename/cfusion.ear/cfusion.war/WEB-INF/cfusion/lib/, но на CF 11 должно быть просто ../WEB-INF/lib.

Вы также можете разместить его в любом месте на сервере и добавить его местоположение в файл пути к классу, отредактировав файл jvm.config.

После добавления его в /lib или путь к классам вам потребуется перезапустить ColdFusion. Удачи!

-Отметка

person Mark A Kruger    schedule 06.01.2015