【问题标题】:Glassfish Illegal character in path at index 8: My Program.warGlassfish 索引 8 处路径中的非法字符:我的 Program.war
【发布时间】:2016-05-23 00:26:03
【问题描述】:

java.lang.IllegalArgumentException:索引处路径中的非法字符 8:我的 Program.war 在 java.net.URI.create(URI.java:859) 在 java.net.URI.resolve(URI.java:1043) 在 org.glassfish.admin.payload.PayloadFilesManager.getOutputFileURI(PayloadFilesManager.java:413) 在 org.glassfish.admin.payload.PayloadFilesManager.extractFile(PayloadFilesManager.java:502) 在 org.glassfish.admin.payload.PayloadFilesManager.access$600(PayloadFilesManager.java:93) 在 org.glassfish.admin.payload.PayloadFilesManager$DataRequestType$1.processPart(PayloadFilesManager.java:753) 在 org.glassfish.admin.payload.PayloadFilesManager.processPartsExtended(PayloadFilesManager.java:622) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$UploadedFilesManager.extractFiles(CommandRunnerImpl.java:1990) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$UploadedFilesManager.(CommandRunnerImpl.java:1962) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$UploadedFilesManager.(CommandRunnerImpl.java:1941) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1119) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674) 在 com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534) 在 com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224) 在 org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246) 在 org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 在 org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 在 org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 在 org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 在 org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 在 org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 在 org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 在 java.lang.Thread.run(Thread.java:745) 引起: java.net.URISyntaxException:索引 8 处路径中的非法字符: 我的 Program.war 在 java.net.URI$Parser.fail(URI.java:2829) 在 java.net.URI$Parser.checkChars(URI.java:3002) 在 java.net.URI$Parser.parseHierarchical(URI.java:3086) 在 java.net.URI$Parser.parse(URI.java:3044) 在 java.net.URI.(URI.java:595) 在 java.net.URI.create(URI.java:857) ... 34 更多

我知道问题是“My Program.war”中有一个空格,我只是不知道如何摆脱它。最初,我的 Java 项目被称为“我的程序”,但由于我收到此错误,我将其重命名为“我的程序”。这已经更改了文件夹名称和项目名称,但由于某种原因,当我部署 Glassfish 应用程序时,它会尝试使用旧名称。如何更新此信息?

【问题讨论】:

  • 在 PayloadFilesManager.java:413 向我们展示您的代码

标签: java glassfish


【解决方案1】:

文件名中的空格是你的IDE配置错误造成的。

解决方法是:

  1. 构建而不是部署您的项目,这将创建一个名为 My Program.war 的 WAR 文件。 IDE 中的输出日志应该会告诉您它的构建位置

  2. 将文件重命名为MyProgram.war

  3. 手动将文件部署到 GlassFish。有instructions in this blog post。最简单的方法可能就是将其复制到自动部署文件夹:glassfish/domains/domain1/autodeploy

【讨论】:

  • 非常感谢,你是救命稻草!
【解决方案2】:

您也可以使用asadmin undeploy <appname>(不带 .war 扩展名),但这也是假设它已部署。我不确定你的情况,但你可以通过asadmin list-applications 确认。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2017-10-17
    相关资源
    最近更新 更多