2

CIS (Content Integration Suite) を介してドキュメントをストレージ アプリケーションにアップロードするための Java アプリケーションを作成しました。アプリは RAD では正常に実行されますが、UNIX 環境では実行可能 jar として実行され、NoClassDefFoundError が発生します。ローカル マシンにクラスが見つからず、インターネット上にクラスへの参照がありません。

マニフェストには、必要な jar ファイルとメイン クラスのクラス パスが含まれています。

誰でも助けることができますか?

Fri Sep 04 16:47:25 EDT 2009 : StandardBatchApplication startup() completed.
java.lang.NoClassDefFoundError: com.stellent.cis.support.spring.ResourceHelper
        at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF
        at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF
        at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF
        at com.stellent.cis.common.classloader.IsolatedJarClassLoader.<clinit>(I
        at java.lang.J9VMInternals.initializeImpl(Native Method)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:196)
        at com.stellent.cis.impl.CISApplicationFactory.getCisClassloader(CISAppl
        at com.stellent.cis.impl.CISApplicationFactory.getCisApplication(CISAppl
        at com.stellent.cis.impl.CISApplicationFactory.initialize(CISApplication
        at com.lowes.ipt.edi.processor.CISApp.initialize(CISApp.java:48)
        at com.lowes.ipt.edi.processor.EDItoEDAMUploadProcessor.main(EDItoEDAMUp
Caused by: java.lang.ClassNotFoundException: com.stellent.cis.support.spring.Res
        at java.net.URLClassLoader.findClass(URLClassLoader.java:496)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:631)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
        ... 11 more

更新: 私が持っている CIS を扱う jar ファイルは 1 つだけです。私は瓶を調べましたが、中にクラスはありません。私は、CIS クラスを持つ他の RAD デフォルト クラスに慣れていません。これは、このクラスだけでなく、webservices.jar に含まれるクラスでも発生します。クラスが表示され、Jar をパスから削除すると、別の欠落しているクラスについて不平を言うため、クラス パスの一部です。パスに戻すと、プログラム内でさらに進み、同じエラーが発生します。

4

2 に答える 2

0

欠落しているクラスは、リモートマシンではなくローカルマシンにインストールされているJARファイルにある可能性があります。または、おそらく-ローカルマシンとは別の場所にあるリムーブマシンにインストールされます(リモートマシンがUnixマシンで、ローカルがWindowsボックスの場合に予想されます)。

ビルドするJARのMANIFEST.MFファイルに設定されているクラスパスは、リモートマシン上の関連するすべてのJARを検索するためのクラスパスを指定する必要があります。そのJARがインストールされている場所を検索してから、そのパスをマニフェストクラスパスに追加する必要があります。UnixマシンのJARは/usr/ share / javaにインストールされることがよくありますが、私はCISに精通しておらず、通常どのJARファイルを配布するのかわからないため、それ以上はわかりません。

于 2009-09-04T22:52:48.663 に答える
0

この問題は、UNIX の tmp ディレクトリの権限が原因でした。CIS API は、tmp ディレクトリを使用して、実行に必要なファイル/クラスを作成および保存します。自分の ID でプロセスを実行していたため、wsadmin によって作成された tmp ファイルにアクセスできませんでした。この問題を解決するには、プロセスを wsadmin として実行する必要があります。

于 2009-09-21T13:39:02.333 に答える