1

PHPでJavaコードを実行する必要があるので、これを見つけました

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コードがあります:

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>

jar を ...\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

バージョンは異なりますが、これはまだ機能するはずなので、これが私の問題ではないと思います

4

1 に答える 1

1

理由UnsupportedClassVersionErrorは、JRE が以前のバージョン (Java 6 など) であるのに対し、クラス ファイルが新しいバージョンの JDK (Java 7 など) を使用してコンパイルされたためです。

外部ライブラリを使用している場合、使用している JRE よりも新しいバージョンの Java コンパイラで外部ライブラリがコンパイルされている可能性があります。JRE を最新バージョンにアップグレードすることをお勧めします。

アプリケーション サーバーを使用して実行している場合は、アプリケーション サーバーが最新バージョンの JRE も使用していることを確認してください。環境変数は最新バージョンの JRE を指している可能性がありますが、アプリケーション サーバーは同じように動作していない可能性があります。

于 2012-06-08T07:32:21.827 に答える