2016-05-09 9 views
1

Slick2dベースのプロジェクトのテンプレートとしてプロジェクトを設定しているときは、Slick2d wiki実行時に設定されたコードhereを提供するコードを使用しています。シールエラー。私の考えは、この問題は両方のライブラリのljgwl.jarのバージョンに由来していますが、Slickは正しく機能するためには両方が必要です。どうすれば解決できますか?封印違反をライブラリから修復するにはどうすればよいですか?封印違反:パッケージorg.lwjgl.openglが封印されています

答えて

2

パッケージシーリングは、JARファイル形式の一部として実装されたJava機能です。 in Oracle's Java Tutorialを含むいくつかの場所で議論されていますが、要点は、Jarのマニフェストでパッケージシーリングが有効になっている場合、そのパッケージに属するクラスは他のJARファイルには表示できないということです。

私の考えでは、この問題は両方のライブラリのljgwl.jarのバージョンに由来しますが、Slickは正しく機能するためには両方が必要です。

「ライブラリ」の意味はわかりません。Javaの概念ではありません。私は、しかし、あなたは何とかljgwl.jarのファイルを2つの別々のソースから持っていて、プロジェクトのクラスパスに両方のファイルを置いていると言っていると思います。それは確かに問題になるでしょう。そして、単にパッケージシールのためだけではありません。実際には、密封エラーに感謝することができます。これは、あなたが微妙なことからあなたを救っている可能性があり、ランタイムエラーを診断することがより困難であるからです。

どうすれば解決できますか?

あなたは関係なく、パッケージのシールによって強制すべての要件の、とにかかわらず、クラスはJARファイルにパッケージされているかの、あなたのクラスパスにLWJGLのコピーを1つだけ持っている必要があります。 Slick2DディストリビューションにLWJGLのコピーが付いているようです。その場合は、おそらくそれを使用するのが一番です。あなたのクラスパスにある限り(Slick2Dがそれを使用する必要があるため)、アプリケーション内の任意のクラスで使用できます。

LWJGLバージョンの要件が矛盾している場合や、LWJGLクラスを組み込んだJARを取得しているが、それが最終行を変更しない場合は、扱いにくいです。 LWJGLの1つのバージョンは、アプリケーション内でそのバージョンを排他的に使用し、クラスパスにそのバージョンのコピーを1つだけ含めます。

+0

ありがとうございました。それを稼働させるために少し論争がかかったのですが、あなたは私をその轍から逃がしました。 – Mir

関連する問題