2013-11-22 34 views
17

を公開にjava.lang.IndexOutOfBoundsException私はMavenを使用してWebprojectを持っていると私は、Tomcat 7にそれを展開しようとすると、私は次のメッセージが出ます:私は見てみるとのEclipse - Tomcatの7から

Publishing failed 
Could not publish to the server. 
java.lang.IndexOutOfBoundsException 
Could not publish server configuration: myworkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\server.xml (The system cannot find the path specified.). 
myworkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\server.xml (The system cannot find the path specified.) 

Could not publish to the server. 
java.lang.IndexOutOfBoundsException 
:私は再び公開しようとした場合

!ENTRY org.eclipse.wst.server.core 4 0 2013-11-22 13:36:40.128 
!MESSAGE Publishing failed 
!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2013-11-22 13:36:40.128 
!MESSAGE Could not publish to the server. 
!STACK 0 
java.lang.IndexOutOfBoundsException 
    at java.io.BufferedInputStream.read(BufferedInputStream.java:338) 
    at org.eclipse.jdt.internal.compiler.util.Util.getInputStreamAsByteArray(Util.java:498) 
    at org.eclipse.jdt.core.ToolFactory.createDefaultClassFileReader(ToolFactory.java:269) 
    at org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities.isEJBArchive(JavaEEArchiveUtilities.java:900) 
    at org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities.refineForJavaEE(JavaEEArchiveUtilities.java:606) 
    at org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities.openArchive(JavaEEArchiveUtilities.java:370) 
    at org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities.openBinaryArchive(JavaEEArchiveUtilities.java:290) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper$ArchiveCache.openArchive(JavaEEBinaryComponentHelper.java:612) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper.openArchive(JavaEEBinaryComponentHelper.java:470) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper.getUniqueArchive(JavaEEBinaryComponentHelper.java:422) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper.getArchive(JavaEEBinaryComponentHelper.java:415) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper.getJavaEEQuickPeek(JavaEEBinaryComponentHelper.java:98) 
    at org.eclipse.jst.j2ee.project.JavaEEProjectUtilities.getJ2EEComponentType(JavaEEProjectUtilities.java:273) 
    at org.eclipse.jst.j2ee.internal.common.exportmodel.JEEHeirarchyExportParticipant.isChildModule(JEEHeirarchyExportParticipant.java:42) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.isChildModule(FlatVirtualComponent.java:367) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.addUsedReferences(FlatVirtualComponent.java:305) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.treeWalk(FlatVirtualComponent.java:235) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.cacheResources(FlatVirtualComponent.java:188) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.fetchResources(FlatVirtualComponent.java:118) 
    at org.eclipse.wst.web.internal.deployables.FlatComponentDeployable.members(FlatComponentDeployable.java:227) 
    at org.eclipse.jst.j2ee.internal.deployables.J2EEFlexProjDeployable.members(J2EEFlexProjDeployable.java:267) 
    at org.eclipse.wst.server.core.internal.ModulePublishInfo.getDelta(ModulePublishInfo.java:407) 
    at org.eclipse.wst.server.core.internal.ServerPublishInfo.getDelta(ServerPublishInfo.java:366) 
    at org.eclipse.wst.server.core.internal.Server.getPublishedResourceDelta(Server.java:1574) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.getPublishedResourceDelta(ServerBehaviourDelegate.java:698) 
    at org.eclipse.jst.server.tomcat.core.internal.TomcatServerBehaviour.getPublishedResourceDelta(TomcatServerBehaviour.java:958) 
    at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.publishDir(PublishOperation2.java:137) 
    at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:82) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:1335) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:954) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:774) 
    at org.eclipse.wst.server.core.internal.Server.publishImpl(Server.java:3153) 
    at org.eclipse.wst.server.core.internal.Server$PublishJob.run(Server.java:345) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 
!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2013-11-22 13:36:40.128 
!MESSAGE Could not publish server configuration: C:\IBM\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\server.xml (The system cannot find the path specified.). 
!STACK 0 
java.io.FileNotFoundException: myworkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\server.xml (The system cannot find the path specified.) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:149) 
    at org.eclipse.jst.server.tomcat.core.internal.TomcatVersionHelper.publishCatalinaContextConfig(TomcatVersionHelper.java:499) 
    at org.eclipse.jst.server.tomcat.core.internal.Tomcat70Configuration.publishContextConfig(Tomcat70Configuration.java:674) 
    at org.eclipse.jst.server.tomcat.core.internal.TomcatServerBehaviour.publishFinish(TomcatServerBehaviour.java:462) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:1011) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:774) 
    at org.eclipse.wst.server.core.internal.Server.publishImpl(Server.java:3153) 
    at org.eclipse.wst.server.core.internal.Server$PublishJob.run(Server.java:345) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 

が、私は最初のエラーが表示されます。私は、以下を参照してください「myworkpace.metadata.logs」内のTomcatのログファイル

とログに:

!ENTRY org.eclipse.wst.server.core 4 0 2013-11-22 13:41:18.645 
!MESSAGE Could not publish to the server. 
!STACK 0 
java.lang.IndexOutOfBoundsException 
    at java.io.BufferedInputStream.read(BufferedInputStream.java:338) 
    at org.eclipse.jdt.internal.compiler.util.Util.getInputStreamAsByteArray(Util.java:498) 
    at org.eclipse.jdt.core.ToolFactory.createDefaultClassFileReader(ToolFactory.java:269) 
    at org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities.isEJBArchive(JavaEEArchiveUtilities.java:900) 
    at org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities.refineForJavaEE(JavaEEArchiveUtilities.java:606) 
    at org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities.openArchive(JavaEEArchiveUtilities.java:370) 
    at org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities.openBinaryArchive(JavaEEArchiveUtilities.java:290) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper$ArchiveCache.openArchive(JavaEEBinaryComponentHelper.java:612) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper.openArchive(JavaEEBinaryComponentHelper.java:470) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper.getUniqueArchive(JavaEEBinaryComponentHelper.java:422) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper.getArchive(JavaEEBinaryComponentHelper.java:415) 
    at org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper.getJavaEEQuickPeek(JavaEEBinaryComponentHelper.java:98) 
    at org.eclipse.jst.j2ee.project.JavaEEProjectUtilities.getJ2EEComponentType(JavaEEProjectUtilities.java:273) 
    at org.eclipse.jst.j2ee.internal.common.exportmodel.JEEHeirarchyExportParticipant.isChildModule(JEEHeirarchyExportParticipant.java:42) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.isChildModule(FlatVirtualComponent.java:367) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.addUsedReferences(FlatVirtualComponent.java:305) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.treeWalk(FlatVirtualComponent.java:235) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.cacheResources(FlatVirtualComponent.java:188) 
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.fetchResources(FlatVirtualComponent.java:118) 
    at org.eclipse.wst.web.internal.deployables.FlatComponentDeployable.members(FlatComponentDeployable.java:227) 
    at org.eclipse.jst.j2ee.internal.deployables.J2EEFlexProjDeployable.members(J2EEFlexProjDeployable.java:267) 
    at org.eclipse.wst.server.core.internal.ModulePublishInfo.fillCache(ModulePublishInfo.java:314) 
    at org.eclipse.wst.server.core.internal.ModulePublishInfo.getDelta(ModulePublishInfo.java:396) 
    at org.eclipse.wst.server.core.internal.ServerPublishInfo.getDelta(ServerPublishInfo.java:366) 
    at org.eclipse.wst.server.core.internal.Server.getPublishedResourceDelta(Server.java:1574) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.getPublishedResourceDelta(ServerBehaviourDelegate.java:698) 
    at org.eclipse.jst.server.tomcat.core.internal.TomcatServerBehaviour.getPublishedResourceDelta(TomcatServerBehaviour.java:958) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.computeDelta(ServerBehaviourDelegate.java:874) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:909) 
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:774) 
    at org.eclipse.wst.server.core.internal.Server.publishImpl(Server.java:3153) 
    at org.eclipse.wst.server.core.internal.Server$PublishJob.run(Server.java:345) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 

私はクリーンインストール(クリーン日食、クリーンTomcatとクリーンなワークスペース)からスタートしようとしたが、

誰もがいずれかを持ってCVSからコードをインポートしたが、それでも同じ問題間違っているかもしれないアイデア(または問題の特定方法)

EDIT

私は別のコンピュータ上のWARファイルにプロジェクトをビルドし、管理コンソール経由でTomcatに直接このwarファイルを展開し、それが動作します。

私の推測では、ビルドが何らかの形で異なっていなければならないということです...

EDIT2

私は完全なMavenのリポジトリを削除しました。このプロジェクトを正しくビルドし、エクスポートされたwarファイルを使ってTomcat上で実行することができました。

は、しかし、私はまだ数回リポジトリ私はMavenを除去した後日食

EDIT3

から直接公開しようとしたときはIndexOutOfBoundsExceptionを取得し、私はプロジェクトをビルドして実行することができました。 Mavenがときどき壊れているようです。

他にこの問題がある場合は、完全なMavenディレクトリを削除し、ワークスペース内の各プロジェクトでmavenアップデートを実行します。

+0

EDIT3のソリューションが私に役立ちました。ありがとう!私はそれを行うと – Frecklefoot

答えて

17

Mavenのリポジトリが壊れている可能性ができます。完全なリポジトリを削除し、ワークスペース内のすべてのプロジェクトを更新することをお勧めします。

+0

私は同じ問題に直面しましたが、リポジトリを削除してプロジェクトを更新することができませんでした。他の選択肢はありますか? – dshgna

+0

私のレポのサイズはとても大きいので、その中のすべてのファイルを削除したくありません。だから私は "org"という名前でディレクトリを削除できますか? stacktrace内のすべてのクラスはorgで始まると思います。 Eclipseで問題が発生したときに明らかではない何か - @dshgna – verystrongjoe

0

これまで説明したようにしてみましょう。以前のインストールを削除してください。 ステップ1 新しいサーバー実行時間 を作成します(ウィンドウ - >環境設定 - >サーバー - >ランタイム環境)。 ステップ2 サーバをEclipseに追加する (ウィンドウ - >ビュー表示 - >サーバ)新しいサーバ設定を追加(右クリックし、新規 - >サーバを選択)しますが、プロジェクトに追加しないでください。 ステップ3 Open Serverの概要ページ 新しいサーバー構成をダブルクリックすると、「サーバーの概要」ページが表示され、サーバーのポートとタイムアウトを設定します。 ステップ4

[サーバーの場所]で[Tomcatのインストールを使用する]を選択します。セーブ。

今すぐサーバーを起動できるはずです。プロジェクトをサーバーに追加すると、準備が整いました。

+0

は、私はまだ2番目のエラーを取得: は、サーバーに公開できませんでした。 java.lang.IndexOutOfBoundsException –

+0

あなたは、私は別のマシン上に構築された同じコードのwarファイルをインポートして、Eclipseを使用せずにTomcatで直接インポートする場合は、[はい、アプリケーションが正常に動作Eclipseの – Varun

+0

を使用せずに独立してサーバを起動することができています。私はこの新しい発見を含めて自分の投稿を編集しました。実際にコードを実行するのではなく、コードを作成する際に何か間違っているはずです。 –

3

この質問に回答されているが - それが破損しているリポジトリに問題だった、日食の外Tomcatに戦争を展開することによって破壊されているリポジトリ内のどのjarファイルを判別することが可能です。問題は(グアバ-13.0.1.jar)を置くところ、そのログで報告された私の状況にTomcatで

 
SEVERE: Unable to process Jar entry [com/google/common/collect/package-info.class] from Jar 
[jar:file:/C:/Java/tomcat/apache-tomcat-7.0.42/webapps/myapp/WEB-INF/lib/guava-13.0.1.jar!/] for annotations 
java.util.zip.ZipException: invalid LOC header (bad signature) 
あなたの.warに含まれているローカルのMavenのレポのほとんどは、おそらくいくつかのjar
+0

私は壊れてあったのJarファイルを判別することが可能であった方法を示していました。 – jtsnr

+1

eclipseの外でTomcatにデプロイする方法は? – dshgna

1

依存関係が壊れているためです。 jtsnrが示唆しているように、Eclipseの外に.warをデプロイして、どのjarファイルが壊れているかを調べることができます。しかし、より迅速な解決策があります。 (WEB-INF/libの下でなければなりません)ちょうどあなたのMavenプロジェクトの/ターゲットディレクトリを見つけます(あるいは単に.warファイルを解凍)し、* .jarファイル内で探します。 これで、シンプルなジッパーツール(例:7-Zip)ですべてを選択して抽出します。あなたが持っている破損ファイルごとにプロンプ​​トが表示されます:この後、Mavenリポジトリ内のファイルを見つけて、そのファイルのバージョン全体を削除します。 大きなリポジトリを持っている場合は、このようにしてjarエコシステム全体を再ダウンロードするのを避けるのに多くの時間を要します:) HTH ..

+0

それは本当に最高の答えです。これが起こるたびにライブラリ全体を削除することは良い解決策ではないようです。 –

関連する問題