为自定义 java class 使用 createObject 后页面停止处理
Page stops processing after using createObject for a custom java class
我正在尝试将一些 java classes 合并到 ColdFusion 应用程序中。我正在使用 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>
我的项目结构:
输出:
我的日志文件:
虽然我在页面上没有发现任何错误,但多亏了 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
在冷聚变中-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
如果我更改为虚构的 class,我会得到预期的错误,所以它确实找到了我的 class,它只是不喜欢它。出了什么问题,如何在 ColdFusion 中使用我的 java class?
正如 exception.log 中的消息所建议的 [感谢 Leigh 建议查看],可以在 ColdFusion 安装目录下的 cfusion\logs 下找到问题确实是我在 Java 8 下编译我的 Java 源代码,但捆绑在我的 ColdFusion 版本中的 JRE 最多只支持 Java 7。通过将我的 "Compile Compliance level" 更改为 1.7 (又名 Java 7)我能够将上面的示例完美地 运行。
要更改在 eclipse 中编译的 Java 版本:
文件>属性>Java 编译器更改 "Compile Compliance level" 比 1.N 更常被称为 Java 版本 N
我正在尝试将一些 java classes 合并到 ColdFusion 应用程序中。我正在使用 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>
我的项目结构:
输出:
我的日志文件:
虽然我在页面上没有发现任何错误,但多亏了 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
在冷聚变中-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
如果我更改为虚构的 class,我会得到预期的错误,所以它确实找到了我的 class,它只是不喜欢它。出了什么问题,如何在 ColdFusion 中使用我的 java class?
正如 exception.log 中的消息所建议的 [感谢 Leigh 建议查看],可以在 ColdFusion 安装目录下的 cfusion\logs 下找到问题确实是我在 Java 8 下编译我的 Java 源代码,但捆绑在我的 ColdFusion 版本中的 JRE 最多只支持 Java 7。通过将我的 "Compile Compliance level" 更改为 1.7 (又名 Java 7)我能够将上面的示例完美地 运行。
要更改在 eclipse 中编译的 Java 版本:
文件>属性>Java 编译器更改 "Compile Compliance level" 比 1.N 更常被称为 Java 版本 N