4

我试图在码头运行一个非常基本的项目(它基本上是一个没有任何功能的线框,只是一些 maven 依赖项)。为此,我使用 mvn jetty 插件:

mvn jetty:run

但是在服务器开始启动后我得到了这个异常:

[INFO] Starting jetty 7.4.0.v20110414 ...
2012-08-16 13:25:22.237:INFO::jetty-7.4.0.v20110414

java.util.zip.ZipException: invalid entry size (expected 3313 but got 2163 bytes)
at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:386)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:156)
at java.util.jar.JarInputStream.read(JarInputStream.java:195)
at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:100)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:78)
at java.util.jar.JarInputStream.getNextEntry(JarInputStream.java:130)
at java.util.jar.JarInputStream.getNextJarEntry(JarInputStream.java:167)
at org.eclipse.jetty.webapp.JarScanner.matched(JarScanner.java:153)
at org.eclipse.jetty.util.PatternMatcher.matchPatterns(PatternMatcher.java:82)
at org.eclipse.jetty.util.PatternMatcher.match(PatternMatcher.java:64)
at org.eclipse.jetty.webapp.JarScanner.scan(JarScanner.java:75)
at org.eclipse.jetty.webapp.MetaInfConfiguration.preConfigure(MetaInfConfiguration.java:75)
at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:406)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:435)
at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:180)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:226)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:164)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:226)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:93)
at org.eclipse.jetty.server.Server.doStart(Server.java:253)
at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:67)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:468)
at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:408)
at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:589)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

这对我来说听起来像是某个地方的损坏的罐子,但我不知道如何进行,这是我第一次使用码头。

有任何想法吗?

4

2 回答 2

7

正如我所怀疑的,这个问题是由于 JAR 文件损坏造成的。我的解决方案是清除我的本地存储库(删除.m2/repository文件夹的内容)并执行:

mvn clean install

在解决了所有依赖项之后,它就像一个魅力一样运行。

您还应该确保在启动 jetty 之前,实际上将应用程序编译到输出文件夹(在我的例子中是一个名为war的文件夹)。

于 2012-08-16T23:18:02.780 回答
4

我发现了以下内容:如何以编程方式复制 jar 文件

这篇文章说:

当源 jar 文件中的文本文件条目包含一些非 ASCII 字符(例如 ^I ^Z ^D ^C)时,通常会发生这种情况。一些常见的文件是 META-INF/COPYRIGHT.html、META-INF/LICENSE.txt 等,可能是因为这些文件是在非 ASCII 编辑器中创建的,但保存为文本文件。在 vi 或 vim 中打开它们以查看这些违规字符。

也许这是错误的原因。

于 2012-08-16T18:39:18.763 回答