4

我一直在努力解决这个问题,似乎无法为这些错误找到任何体面的答案或解释。我正在使用第 3 方 JAR“PropHandler.jar”我正在尝试调用 getMessageList 方法,它接受 3 个参数并需要一个配置文件。

<cfset configFile = 'C:\data\getMsgListCONFIG.xml'>
<cfset Obj = createObject("java","client.PropHandler") />
<cfdump var="#Obj#">


一切都很好,我的转储返回一个方法列表。现在,我需要将我的配置文件传递给该方法并传入我的参数,这里不爱,我已经尝试过:

<cfset x = Obj.getMessageList.init(configFile)>

<cfset x = Obj.getMessageList().init(configFile)>

<cfset x = Obj.getMessageList('identifier', 'greaterthan', '2012-05-18T12:00:00-04:00').init(configFile)>

甚至尝试通过创建对象进行初始化:

<cfset Obj = createObject("java","client.PropHandler").getMessageList('identifier', 'greaterthan', '2012-05-18T12:00:00-04:00').init(configFile)>

全部返回相同的错误:

对象实例化异常

实例化 Java 对象时发生异常。该类不能是接口或抽象类。如果类具有接受参数的构造函数,则必须使用 init(args) 方法显式调用构造函数。错误:client.PropertyHandler

当我不发送 3 个参数时,我得到一个方法未找到错误,如果我不发送 init,我会得到同样的错误。

所以,我没有太多的 JAVA 经验,我不明白错误信息。从命令行调用时,甚至使用 BAT 文件执行时,我都可以很好地使用 JAR,但是当我这样做时,我无法将 XML SOAP 数组返回给我......

来自 Java 文档:

属性处理程序

public PropertyHandler(java.lang.String propFile) throws java.lang.Exception

使用属性文件设置所有程序变量。此属性文件指的是标识用户 ID 和安全文件数据的第二个属性文件。

参数:

  • propFile- 属性的 XML 文件

抛出:

  • java.lang.Exception

获取消息列表

public services.[...].GetResponseTypeDef getMessageList(java.lang.String par1,
                  java.lang.String comp_Op1,
                  java.lang.String parValue1 )

覆盖 X_Properties 以返回有关满足函数参数定义的查询的每条消息的元数据列表。

参数:

  • par1- 参数枚举之一
  • comp_Op1- CompOp 枚举之一
  • parValue1- 比较值

回报:

满足查询条件的元数据消息列表 如果遇到异常而不是抛出异常,则返回 null。

4

1 回答 1

2

调用的结构如下:

<cfset Obj = createObject("java","client.PropHandler") />   
<cfset Meth = Obj.init(argfile).getMessageList(arg1,arg2,arg3)>

argfile变量是 XML 配置文件的路径,它还使用相对路径引用了另一个配置文件。一旦路径更改为绝对内部argfile错误已解决,我从堆栈跟踪(如下)中发现了此错误。

cf_getMsgs2ecfm497532872.runPage(E:\Inetpub\wwwroot_getMsgs.cfm:24) 处的堆栈跟踪,位于 cf_getMsgs2ecfm497532872.runPage(E:\Inetpub\wwwroot_getMsgs.cfm:24)

java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在coldfusion.runtime.java.JavaProxy.CreateObject(JavaProxy.java:156) 在coldfusion.runtime.java.JavaProxy.invoke(JavaProxy.java:63)在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) 在coldfusion.tagext 的cf_getMsgs2ecfm497532872.runPage(E:\Inetpub\wwwroot_getMsgs.cfm:24) 在coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196) .lang.IncludeTag.doStartTag(IncludeTag.java:370) 在coldfusion.filter。CfincludeFilter.invoke(CfincludeFilter.java:65) 在coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:279) 在coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) 在coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter .java:40) 在coldfusion.filter.PathFilter.invoke(PathFilter.java:86) 在coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) 在coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)在coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) 在coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) 在coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) 在coldfusion.filter。 GlobalsFilter.invoke(GlobalsFilter.java:38) 在coldfusion.filter。DatasourceFilter.invoke(DatasourceFilter.java:22) 在coldfusion.CfmServlet.service(CfmServlet.java:175) 在coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 在jrun.servlet.FilterChain.doFilter(FilterChain.java :86) 在coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) 在coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) 在jrun.servlet.FilterChain.doFilter(FilterChain.java:94)在 jrun.servlet.FilterChain.service(FilterChain.java:101) 在 jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) 在 jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) 在 jrun.servlet。 JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) 在 jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 在 jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) 在 jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320) 在 jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java :428) 在 jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266) 在 jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) 引起: java.io.FileNotFoundException: ..\data\APIproperties.xml (系统找不到指定的路径) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(FileInputStream.java:106) at java.io.FileInputStream.(FileInputStream.java:66) 在 client.PropertyHandler.(PropertyHandler.java:133)

谢谢@Leigh 和@imthepitts

于 2013-09-21T18:07:42.480 回答