2012-06-08 5 views
1

мне нужно запустить некоторые Java-код на PHP, так что я нашел этоPHP/Java Bridge UnsupportedClassVersionError

http://php-java-bridge.sourceforge.net/pjb/index.php 

так что я скачал и кот положил JavaBridge.war в каталоге WebApps и я получил примеры работы (Мне потребовалось некоторое время, чтобы понять это)

Я могу даже загружать встроенные java-файлы Java("java.lang.System") и запускать примерные банки с моим собственным PHP-кодом.

То, что я не мог сделать свою собственную баночку и запустить его я попробовал множество различных компиляторов (Затмение, Netbeans, командная строка), но это не помощи.

Я пытаюсь сделать что-то вроде этого http://www.developer.com/java/other/php-with-java-using-php-java-bridge-tutorial.html

Вот мой Java-код:

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 код:

<!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> 

я поставил банку в ... \ tomcat \ webapps \ JavaBridge \ WEB-INF \ lib и файл php в ... \ tomcat \ webapps \ JavaBridge

и я получаю следующую ошибку, когда я проверить http://localhost:8080/JavaBridge/mytest.php:

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: [email protected]://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?

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 

версии различны, но это должно работать, так что я не верю, что это моя проблема

+0

Какая версия Java относится к tomcat? –

+0

@subirkumarsao Я пробовал кое-что, но не мог получить хороший ответ, как я мог это понять? – m1sk

+0

Обычно мы указываем Java на tomcat через переменные среды JAVA_HOME или JRE_HOME. Проверьте их, если нет, укажите один с правильной версией Java. Сохраняйте версию компилятора (jdk) и JVM (jre) одинаковой, хотя это не обязательно. –

ответ

1

Причина для UnsupportedClassVersionError заключается в том, что ваш файл класса был скомпилирован с использованием более поздней версии JDK (например, Java 7), в то время как ваша JRE является более ранней версией (например, Java 6).

Если вы используете внешние библиотеки, то, скорее всего, внешняя библиотека была скомпилирована с более новой версией Java Compiler по сравнению с используемой вами JRE. Я бы рекомендовал вам обновить JRE до последней версии.

Если вы используете Application Server для его запуска, проверьте, что ваш сервер приложений также использует последнюю версию JRE. Ваша переменная среды может указывать на последнюю версию JRE, но ваш сервер приложений может и не делать то же самое.

+0

Будет ли Tomcat быть моим сервером приложений? В любом случае, как бы проверить версию JRE? – m1sk

+0

проверка старт.бат/старт.sh. вы можете видеть, где использует tomcat –

Смежные вопросы