1

我的应用程序最近从 JSF 1.2 升级到了 JSF 2.1.3。我正在使用 Mojarra。

我的应用程序通过 RAD8 中的 WAS7 管理控制台安装为 EAR。

索引 22 指的是“程序文件”中的空间。

当服务器在这里启动时,我得到的重要错误是:

Caused by: java.net.URISyntaxException: Illegal character in opaque part at index 22: wsjar:file:/C:/Program Files/IBM/SDP/runtimes/base_v7/profiles/IndSalesUtilsAppSrv02/installedApps/R8CMY8NW7LNode03Cell/IndUserServices.ear/IndUserServicesWeb.war/WEB-INF/lib/ind-jsf-v1.6.0.jar!/META-INF/faces-config.xml
    at java.net.URI$Parser.fail(URI.java:2809)
    at java.net.URI$Parser.checkChars(URI.java:2982)
    at java.net.URI$Parser.parse(URI.java:3019)
    at java.net.URI.<init>(URI.java:578)
    at com.sun.faces.config.configprovider.MetaInfFacesConfigResourceProvider.loadURLs(MetaInfFacesConfigResourceProvider.java:160)
    ... 30 more

这是完整的堆栈跟踪:

[12/3/12 11:26:02:659 CST] 00000009 webapp        E com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0}
                                 java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: javax.faces.FacesException: java.io.IOException: java.net.URISyntaxException: Illegal character in opaque part at index 22: wsjar:file:/C:/Program Files/IBM/SDP/runtimes/base_v7/profiles/IndSalesUtilsAppSrv02/installedApps/R8CMY8NW7LNode03Cell/IndUserServices.ear/IndUserServicesWeb.war/WEB-INF/lib/ind-jsf-v1.6.0.jar!/META-INF/faces-config.xml
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:290)
    at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1708)
    at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:381)
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:299)
    at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:100)
    at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:166)
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:732)
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:617)
    at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:376)
    at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:668)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1127)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1319)
    at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:610)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:944)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:740)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2051)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:385)
    at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:328)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$300(CompositionUnitMgrImpl.java:113)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:895)
    at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:349)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)
Caused by: com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: javax.faces.FacesException: java.io.IOException: java.net.URISyntaxException: Illegal character in opaque part at index 22: wsjar:file:/C:/Program Files/IBM/SDP/runtimes/base_v7/profiles/IndSalesUtilsAppSrv02/installedApps/R8CMY8NW7LNode03Cell/IndUserServices.ear/IndUserServicesWeb.war/WEB-INF/lib/ind-jsf-v1.6.0.jar!/META-INF/faces-config.xml
    at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:663)
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:323)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:223)
    ... 22 more
Caused by: java.util.concurrent.ExecutionException: javax.faces.FacesException: java.io.IOException: java.net.URISyntaxException: Illegal character in opaque part at index 22: wsjar:file:/C:/Program Files/IBM/SDP/runtimes/base_v7/profiles/IndSalesUtilsAppSrv02/installedApps/R8CMY8NW7LNode03Cell/IndUserServices.ear/IndUserServicesWeb.war/WEB-INF/lib/ind-jsf-v1.6.0.jar!/META-INF/faces-config.xml
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:649)
    ... 24 more
Caused by: javax.faces.FacesException: java.io.IOException: java.net.URISyntaxException: Illegal character in opaque part at index 22: wsjar:file:/C:/Program Files/IBM/SDP/runtimes/base_v7/profiles/IndSalesUtilsAppSrv02/installedApps/R8CMY8NW7LNode03Cell/IndUserServices.ear/IndUserServicesWeb.war/WEB-INF/lib/ind-jsf-v1.6.0.jar!/META-INF/faces-config.xml
    at com.sun.faces.config.configprovider.MetaInfFacesConfigResourceProvider.getResources(MetaInfFacesConfigResourceProvider.java:135)
    at com.sun.faces.config.ConfigManager$URITask.call(ConfigManager.java:1179)
    at com.sun.faces.config.ConfigManager$URITask.call(ConfigManager.java:1148)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:639)
    ... 24 more
Caused by: java.io.IOException: java.net.URISyntaxException: Illegal character in opaque part at index 22: wsjar:file:/C:/Program Files/IBM/SDP/runtimes/base_v7/profiles/IndSalesUtilsAppSrv02/installedApps/R8CMY8NW7LNode03Cell/IndUserServices.ear/IndUserServicesWeb.war/WEB-INF/lib/ind-jsf-v1.6.0.jar!/META-INF/faces-config.xml
    at com.sun.faces.config.configprovider.MetaInfFacesConfigResourceProvider.loadURLs(MetaInfFacesConfigResourceProvider.java:177)
    at com.sun.faces.config.configprovider.MetaInfFacesConfigResourceProvider.getResources(MetaInfFacesConfigResourceProvider.java:108)
    ... 29 more
Caused by: java.net.URISyntaxException: Illegal character in opaque part at index 22: wsjar:file:/C:/Program Files/IBM/SDP/runtimes/base_v7/profiles/IndSalesUtilsAppSrv02/installedApps/R8CMY8NW7LNode03Cell/IndUserServices.ear/IndUserServicesWeb.war/WEB-INF/lib/ind-jsf-v1.6.0.jar!/META-INF/faces-config.xml
    at java.net.URI$Parser.fail(URI.java:2809)
    at java.net.URI$Parser.checkChars(URI.java:2982)
    at java.net.URI$Parser.parse(URI.java:3019)
    at java.net.URI.<init>(URI.java:578)
    at com.sun.faces.config.configprovider.MetaInfFacesConfigResourceProvider.loadURLs(MetaInfFacesConfigResourceProvider.java:160)
    ... 30 more

我尝试过但没有奏效的事情:

  1. 更新到 JSF 2.1.14(查看 MetaInfFacesConfigResourceProvider 的源代码,我发现它没有从 2.1.3 更改为 2.1.14,所以它不起作用是有道理的。)
  2. 获取源代码 将应用程序作为项目导入(如果项目路径没有空格则有效,如果项目路径中有空格则无效)
  3. 将服务器上的“运行时环境”从“C:\Program Files\IBM\SDP\runtimes\base_v7”更改为“C:\Progra~1\IBM\SDP\runtimes\base_v7”(似乎没有做任何事情)

我很确定它与这个问题有关,似乎永远不会得到解决

如果这是 IBM 的问题,我不会感到惊讶。但是我需要在没有 IBM 修复的情况下以某种方式完成这项工作。

目前不能选择在不包含空格的新位置重新安装 RAD8。

4

3 回答 3

1

这似乎已在 2.1.16 和 2.2 主干中修复。

http://java.net/jira/browse/JAVASERVERFACES-2628

于 2013-01-09T15:17:44.613 回答
0

试试这个:

File f = new File("C:/Program Files/I...[rest of filepath]");
URI u = f.toURI();

获取您的 URI。空格在文件名中有效,但在 URI 中无效,这将正确转义。

于 2012-12-24T14:36:52.643 回答
0

当我部署一个战争应用程序(在耳朵内)并且战争应用程序的名称中包含空格时,这个问题总是出现在 IBM WAS 7/8 上。

我的解决方案是删除“战争”文件名中的每个空格

于 2014-02-25T14:54:16.230 回答