PHP/Java Bridge UnsupportedClassVersionError
Мне нужно запустить Java-код на PHP, поэтому я нашел это
http://php-java-bridge.sourceforge.net/pjb/index.php
поэтому я скачал tomcat и поместил JavaBridge.war в каталог webapps, и примеры работали (мне потребовалось время, чтобы понять это)
Я даже могу загрузить встроенный Java-материал Java("java.lang.System")
и запустить пример jar с моим собственным кодом PHP.
Что я не мог сделать, так это сделать свой собственный jar-файл и запустить его. Я пробовал разные компиляторы (Eclipse,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: 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)
Я ищу в стеке это по моей ошибке: что является причиной 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
версия отличается, но это все равно должно работать, поэтому я не верю, что это моя проблема
1 ответ
Причина для UnsupportedClassVersionError
потому что ваш файл класса был скомпилирован с использованием более поздней версии JDK (например, Java 7), в то время как ваш JRE является более ранней версией (например, Java 6).
Если вы используете внешние библиотеки, то, вероятно, внешняя библиотека была скомпилирована с более новой версией компилятора Java по сравнению с используемой вами JRE. Я бы порекомендовал вам обновить JRE до последней версии.
Если вы используете сервер приложений для его запуска, убедитесь, что на вашем сервере приложений также установлена последняя версия JRE. Ваша переменная окружения может указывать на последнюю версию JRE, но ваш сервер приложений может делать то же самое.