Mavenを使用するWebプロジェクトがあり、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.)
「myworkpace.metadata.logs」でTomcatのログファイルを見ると、次のように表示されます。
!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)
再度公開しようとすると、最初のエラーのみが表示されます。
Could not publish to the server.
Java.lang.IndexOutOfBoundsException
そしてログ:
!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)
クリーンインストール(クリーンEclipse、クリーンTomcat、クリーンワークスペース)から始めて、CVSからコードをインポートしようとしましたが、それでも同じ問題があります
誰が間違っている可能性があるのか(または問題を特定する方法)についてのアイデアはありますか?
[〜#〜] edit [〜#〜]
プロジェクトを別のコンピューターのWARファイルにビルドし、このwarファイルを管理コンソール経由でTomcatに直接デプロイすると、機能します。
私の推測では、ビルドは何らかの形で異なっている必要があります...
EDIT2
完全なMavenリポジトリーを削除しました。これを見て、プロジェクトを正しくビルドし、エクスポートされたwarファイルを使用してTomcatで実行することができました。
ただし、Eclipseから直接公開しようとするとIndexOutOfBoundsExceptionが発生します
EDIT
Mavenリポジトリーを数回削除した後、プロジェクトをビルドして実行することができました。 Mavenは時々破損するようです。
他の人がこの問題を抱えている場合、完全なMavenディレクトリを削除し、ワークスペース内の各プロジェクトでmaven更新を実行します。
Mavenリポジトリが破損している可能性があります。完全なリポジトリを削除し、ワークスペース内のすべてのプロジェクトを更新することをお勧めします。
この質問は回答済みですが、破損したリポジトリの問題でしたが、Eclipseの外部のTomcatにwarをデプロイすることにより、リポジトリ内のどのjarが破損しているかを判断することができます。
私の状況では、Tomcatはログで問題が発生した場所を報告しました(guava-13.0.1.jar):
重大:Jar [jar:file:/ C:/ Java/Tomcat/Apache-TomcatのJarエントリ[com/google/common/collect/package-info.class]を処理できません-7.0.42/webapps/myapp/WEB-INF/lib/guava-13.0.1.jar!/]アノテーション Java.util.Zip.ZipException:無効なLOCヘッダー(不正な署名)
おそらく、依存関係が破損しているため、.warに含まれているローカルMavenリポジトリのいくつかのjarファイルが破損しています。 jtsnrが示唆したように、Eclipseの外部に.warをデプロイして、破損しているjarを検出できます。しかし、より迅速な解決策があります。 Mavenプロジェクトの/ target dirを見つける(または.warを解凍する)だけで、*。jarファイル内に配置します(WEB-INF/libの下にある必要があります)。これで、シンプルなZipツール(例:7-Zip)ですべてを選択して抽出します。破損したファイルごとにプロンプトが表示されます。この後、Mavenリポジトリでファイルを見つけ、そのファイルのバージョン全体を削除します。このようにして、大きなリポジトリがある場合、jarエコシステム全体を再ダウンロードすることを回避するために多くの時間を得ることができます:) HTH ..
以下に記載されている方法で一度試してみましょう。そのため、以前のインストールを削除してください。ステップ1新しいサーバーランタイムを作成します(ウィンドウ->設定->サーバー->ランタイム環境)。ステップ2サーバーをEclipseに追加(ウィンドウ->ビューの表示->サーバー)新しいサーバー構成を追加(右クリックして[新規]-> [サーバー]を選択)しますが、プロジェクトを追加しないでください。ステップ3サーバー概要ページを開く新しいサーバー構成をダブルクリックして、サーバーのポートとタイムアウトを設定するサーバー概要ページを表示します。ステップ4
[サーバーの場所]で[Tomcatインストールを使用]を選択します。セーブ。
これでサーバーを起動できるはずです。サーバーにプロジェクトを追加すると、準備が整いました。