2

私はこのチュートリアルhttp://www.dsl.uow.edu.au/~sk33/php5java.htmに従いましたが、ついにこれを試したとき

<?php

java_require('http://localhost/test/HelloWorld.jar');
$myObj = new Java('HelloWorld');

// display Hello World
echo (String) $myObj->getHelloWorld();


?>

私はこの例外を得ました

PHP Fatal error: Uncaught [o(Exception):"java.lang.Exception: CreateInstance failed:new HelloWorld.Cause: java.lang.ClassNotFoundException: Could not find HelloWorld in java_require() path.パスと SEL を確認してください。ファイルのパーミッション。責任のある VM: 1.5.0_14@http://java.sun.com/" at:#-10 php java.bridge.DynamicJavaBridgeClassLoader.loadClass(DynamicJavaBridgeClassLoader.java:293)

4

2 に答える 2

2

あなたがフォローしているチュートリアルは 5 年前のものであり、FAQによるjava_require()と非推奨です:

java_require() が非推奨になったのはなぜですか?

Javaにはモジュールシステムがないためです。

たとえば、アプリケーション A が必要とするライブラリの古いバージョンが既にキャッシュされている場合、アプリケーション B が必要とするライブラリ「lucene-2.3.1.jar」をロードすることはできません。 ライブラリをリンクしようとすると、実行時に「NoClassDefFound」または「NoSuchMethod」エラーが発生します。または、一部のプロシージャは、チェック例外を宣言していなくても、チェック例外をスローする場合があります。

PHP 開発者を Java の「jar 地獄」から守るために、私は PHP/Java Bridge バージョン 6.0 から動的クラス ローディング メカニズムを削除しました。java_require() は警告を発行します。

適切な Java モジュール システムでは、今まで存在しなかった特別な Java VM フックを使用する必要があります。

Java ライブラリをロードするにはどうすればよいですか?

Java スタンドアロンまたはJava Web アプリケーションのドキュメントで説明されているように、Java アプリケーションをリンクする必要があります。

于 2012-11-16T07:36:23.827 に答える
1

このエラーは、HelloWorldクラスが見つからなかったことを示しています。

に使用したアドレスにファイルが実際にあることを確認しますjava_require。そうである場合は、ファイル内のコードがチュートリアルで説明されているとおりであることを確認してください。

于 2012-08-06T13:36:58.500 に答える