首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP/Java Bridge UnsupportedClassVersionError

PHP/Java Bridge UnsupportedClassVersionError
EN

Stack Overflow用户
提问于 2012-06-08 15:17:38
回答 1查看 1.3K关注 0票数 1

我需要在php上运行一些java代码,所以我找到了这个

代码语言:javascript
运行
复制
http://php-java-bridge.sourceforge.net/pjb/index.php

所以我下载了tomcat并将JavaBridge.war放在webapps目录中,然后我让示例正常工作(我花了一段时间才弄明白)

我甚至可以加载内置的java内容Java("java.lang.System"),并用我自己的PHP代码运行示例jar。

我不能做的是制作自己的jar并运行它我尝试了各种不同的编译器(Eclipse、Netbeans、命令行),但这都没有帮助。

我正在尝试做这样的事情,http://www.developer.com/java/other/php-with-java-using-php-java-bridge-tutorial.html

下面是我的java代码:

代码语言:javascript
运行
复制
package m1sk;

/**
 *
 * @author M1sk
 */
public class Hello implements java.io.Serializable{

    String hi() {return "This is my hello message";}
    String hello(String name) {return "Hello" + name;}
} 

php代码:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once ("java/Java.inc");
    //  $t1 = new Java("java.lang.System"); 
    //echo $t1->getProperties(); //this works
        $world = new java("m1sk.Hello");
      //  echo $world->hi();
      echo "Hello Working Thingy\n\n";
        ?>
    </body>
</html>

我将jar放在...\tomcat\webapps\JavaBridge\WEB-INF\lib中,将php文件放在...\tomcat\webapps\JavaBridge中

当我测试http://localhost:8080/JavaBridge/mytest.php时,我得到了以下错误

代码语言:javascript
运行
复制
javax.servlet.ServletException: java.lang.RuntimeException: PHP Fatal error:  Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance failed: new m1sk.Hello. Cause: java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class m1sk.Hello) VM: 1.5.0_20@http://java.sun.com/" at:
#-13 org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1854)
#-12 org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
#-11 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
#-10 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
#-9 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
#-8 java.lang.Class.forName0(Native Method)
#-7 java.lang.Class.forName(Class.java:242)
#-6 php.java.bridge.Util.classForName(Util.java:1518)
#-5 php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445)
#-4 php.java.bridge.Request.handleRequest(Request.java:458)
#-3 php.java.bridge.Request.handleRequests(Request.java:500)
#-2 php.java.bridge.http.C in C:\xampp\tomcat\webapps\JavaBridge\java\Java.inc on line 195

    php.java.servlet.fastcgi.FastCGIServlet.handle(FastCGIServlet.java:499)
    php.java.servlet.fastcgi.FastCGIServlet.doGet(FastCGIServlet.java:521)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    php.java.servlet.PhpCGIFilter.doFilter(PhpCGIFilter.java:126)

我在堆栈中搜索发现了以下错误:What is the reason for UnsupportedClassVersionError?

代码语言:javascript
运行
复制
C:\Users\M1sk\Desktop>java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b22)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

C:\Users\M1sk\Desktop>javac -version
javac 1.6.0_25

版本是不同的,但这应该仍然有效,所以我不相信这是我的问题

EN

回答 1

Stack Overflow用户

发布于 2012-06-08 15:32:22

使用UnsupportedClassVersionError的原因是因为您的类文件是使用较新版本的JDK编译的(例如,.Java 7),而您的JRE是较早的版本(例如,Java 6)。

如果您使用的是外部库,那么与您使用的JRE相比,外部库很可能是使用较新版本的Java Compiler编译的。我建议您将JRE升级到最新版本。

如果您正在使用Application Server来运行它,请务必检查您的Application Server是否也在使用最新版本的JRE。您的环境变量可能指向最新版本的JRE,但是您的应用服务器可能不会执行相同的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10944568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档