对自定义java类使用createObject后,页面停止处理

时间:2015-02-08 21:49:45

标签: java coldfusion coldfusion-10

我试图在ColdFusion应用程序中合并一些java类。我在ColdFusion 10中使用了新功能,我可以在Application.cfc中指定ColdFusion应该在哪里查找.class文件。当我尝试使用createObject创建其中一个对象时,页面似乎停止处理。我想强调页面上没有错误,就好像包含<cfabort>一样。

我的Application.cfc

<cfcomponent accessors="true" output="false" persistent="false">
    <cfscript>
    THIS.javaSettings = {LoadPaths = ["C:\ColdFusion11\cfusion\wwwroot\JavaTest\Hybrid\java\bin"], loadColdFusionClassPath = true, watchInterval = 10, reloadOnChanges = true};
    </cfscript>
</cfcomponent>

我的Java文件

public class TestRT {
    public static String sayHello(){
        return "hello";
    }
    public static String echo(String e){
        return "hello";
    }
}

我的cfm

<html>
<head><title>Hello World</title></head>
    <body>
        <h2>Echo example</h2>

        <cfset hello = createObject("java","TestRT").init()>
        <cfoutput>Hi #hello.echo("marc")#</cfoutput>

        <h2>End - I NEVER SHOW</h2>
    </body>
</html>

我的项目结构:

My Project structure

输出:

  

Code output

我的日志文件:

虽然页面上没有错误,但感谢Leigh我的日志文件中有几个错误:

在exception.log中:

"Error","http-bio-8500-exec-2","02/09/15","06:18:35",,"TestRT : Unsupported major.minor version 52.0 The specific sequence of files included or processed is: C:\ColdFusion11\cfusion\wwwroot\JavaTest\Hybrid\index.cfm, line: 8 "
java.lang.UnsupportedClassVersionError: TestRT : Unsupported major.minor version 52.0

在coldfusion-error.log中:

Feb 09, 2015 6:18:36 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [CfmServlet] in context with path [/] threw exception [Servlet execution threw an exception] with root cause
java.lang.UnsupportedClassVersionError: TestRT : Unsupported major.minor version 52.0

如果我换成一个补课,我会得到预期的错误,所以它确实找到了我的课,它只是不喜欢它。出了什么问题,如何在ColdFusion中使用我的java类?

1 个答案:

答案 0 :(得分:1)

正如exception.log中的消息所示[感谢Leigh建议查看那里],可以在你的ColdFusion安装目录下的cfusion \ logs下找到,问题确实是我正在编译我在Java 8下的Java源代码,但我的ColdFusion版本中捆绑的JRE仅支持Java 7.通过将我的“编译合规性级别”更改为1.7(也称为Java 7),我能够使上面的示例完美运行。 / p>

更改在eclipse中编译的Java版本:

文件&gt;属性&gt; Java编译器更改“编译符合级别”记住比1.N更常被称为Java版本N

enter image description here