我为我的学徒建立了一个Liferay Portlet,但也很奏效。但是,我使用示例对象来使一切从一开始就简单。然后我的主管集成了一些程序包,以便我可以调用服务来获取真实对象。发生这种情况后,他更改了一些依赖项,否则将出现问题。
到目前为止,一切正常,除了用户界面上的组件不再起作用,因为在生产系统中使用的是Primefaces 7.0和Primefaces 3.5。由于在那里也使用了JSF 2.1,因此我必须将自己定位为旧版本的primefaces。但他说,有一种使用Primefaces 6.1的方法。如此处所述:https://faces.liferay.dev/home/-/archetype-portlet/liferay-portal-version/6.2/jsf-version/2.1/component-suite/primefaces/build-tool/maven
我遵循了本指南并更改了依存关系。之后,没有任何效果。我已经尝试了一切。尝试删除可能造成麻烦的重复依赖项,检查lib文件夹中的jar文件,依此类推。根据具体情况,我还会收到其他错误消息,但是我有两天没有进展了。
不幸的是,当所有版本都与旧版本兼容时,我没有得到代码。为此,我发布了当前状态,也许有人可以帮助我。
<dependencies>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.liferay.faces.patches</groupId>
<artifactId>com.liferay.faces.lsv.485.patch</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>portal-service</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>util-java</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.21</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.21</version>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>1.2_15</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.portletbridge</groupId>
<artifactId>portletbridge-api</artifactId>
<version>2.3.1.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.portletbridge</groupId>
<artifactId>portletbridge-impl</artifactId>
<version>2.3.1.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>richfaces-ui</artifactId>
<version>3.3.3.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-api</artifactId>
<version>3.3.3.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-impl</artifactId>
<version>3.3.3.patched</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>javax.faces-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>1.2_15</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.facelets</groupId>
<artifactId>jsf-facelets</artifactId>
<version>1.1.15.B1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-el</artifactId>
<version>2.0.0.GA</version>
<exclusions>
<exclusion>
<artifactId>el-api</artifactId>
<groupId>javax.el</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>javax.faces-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.29-10</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.liferay.faces</groupId>
<artifactId>com.liferay.faces.bridge.ext</artifactId>
<version>2.0.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.liferay.faces</groupId>
<artifactId>com.liferay.faces.bridge.impl</artifactId>
<version>3.1.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>6.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
出于技术原因,我从上面显示的代码中删除了2个与集成框架相关的依赖项。
这些是一些错误消息,这些消息会重新生成:
SCHWERWIEGEND: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/DynamischerKonfigurationsDialog-portlet]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1263)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1948)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: javax/faces/webapp/FacesServlet
at com.sun.faces.config.FacesInitializer.<clinit>(FacesInitializer.java:106)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
..
SCHWERWIEGEND: Servlet.service() for servlet DynamicKonfigCheckBox Servlet threw exception
javax.portlet.faces.BridgeException: javax.faces.FacesException: No portlet bridge context
at com.liferay.faces.bridge.internal.BridgePhaseRenderImpl.execute(BridgePhaseRenderImpl.java:63)
...
Caused by: javax.faces.FacesException: No portlet bridge context
at org.jboss.portletbridge.context.PortletExternalContextImpl.<init>(PortletExternalContextImpl.java:115)
at org.jboss.portletbridge.context.MimeExternalContextImpl.<init>(MimeExternalContextImpl.java:74)
...
Feb 11, 2020 8:26:15 AM org.apache.catalina.core.ApplicationDispatcher invoke
SCHWERWIEGEND: Servlet.service() for servlet DynamicKonfigCheckBox Servlet threw exception
javax.portlet.faces.BridgeException: javax.faces.FacesException: No portlet bridge context
at com.liferay.faces.bridge.internal.BridgePhaseRenderImpl.execute(BridgePhaseRenderImpl.java:63)
at com.liferay.faces.bridge.internal.BridgeImpl.doFacesRequest(BridgeImpl.java:161)
...
Caused by: javax.faces.FacesException: No portlet bridge context
at org.jboss.portletbridge.context.PortletExternalContextImpl.<init>(PortletExternalContextImpl.java:115)
at org.jboss.portletbridge.context.MimeExternalContextImpl.<init>(MimeExternalContextImpl.java:74)
...
如果要对代码进行版本控制,则可以尝试使用“本地历史记录”选项,以恢复正常工作的软件。否则,您可以指定应用服务器及其配置吗?