相关疑难解决方法(0)

在JSP中启用JavaServerPages标准标记库(JSTL)

我觉得我错过了一些东西 - 从看起来似乎,JSP开箱即用,支持标签,因为这个问题的答案显示(那家伙问的是一个纯粹的jsp问题,得到了一个涉及标签的答案).但是,如果我尝试运行给定的代码

<c:out value="${myString}"/>
Run Code Online (Sandbox Code Playgroud)

(myString当然,在定义之前),jsp只是将上面的行写入html.

我是否必须做一些额外的事情来启用它?

jsp jstl

5
推荐指数
1
解决办法
4713
查看次数

了解FacesContext实例化详细信息

Mojarra 2.2.12

以下是接管FacesContext实例化的代码片段:

FacesContext context = facesContextFactory.getFacesContext
              (servletConfig.getServletContext(), request, response, lifecycle);
Run Code Online (Sandbox Code Playgroud)

表达非常清楚.获得请求后,我们从中获取全局信息并FacesContext使用它创建实例.因此,为每个请求创建实例.但在facesContextFactory我看来,获得这种感觉更加棘手.

// Acquire our FacesContextFactory instance
try {
    facesContextFactory = (FacesContextFactory)
        FactoryFinder.getFactory
        (FactoryFinder.FACES_CONTEXT_FACTORY);
} catch (FacesException e) {
    //others
}
Run Code Online (Sandbox Code Playgroud)

哪里

String javax.faces.FactoryFinder.FACES_CONTEXT_FACTORY = "javax.faces.context.FacesContextFactory"
Run Code Online (Sandbox Code Playgroud)

JavaDocs用于FactoryFinder描述所谓的

JavaServer Faces API中指定的所有工厂对象的标准发现算法.

这就是我感到困惑的地方.

现在,让我们考虑创建工厂实例的实际方法:javax.faces.FactoryFinderInstance #getFactory(String factoryName)

try {
      factoryOrList = factories.get(factoryName);
      if (!(factoryOrList instanceof List)) {
          return factoryOrList;
      }
} finally {
      lock.readLock().unlock();
}
Run Code Online (Sandbox Code Playgroud)

factories字段初始化如下copyInjectionProviderFromFacesContext():

private void copyInjectionProviderFromFacesContext() { …
Run Code Online (Sandbox Code Playgroud)

lifecycle jsf

5
推荐指数
1
解决办法
5504
查看次数

将 com.sun.faces 与 Jakarta EE 结合使用

我正在尝试将 Wildfly 服务器上的旧版 Java EE 应用程序升级到 Jakarta EE 8。由于 8 尚未将软件包名称交换为 jakarta,因此大部分升级都很顺利。但是,我们的一些代码使用 Oracle com.sun.faces 包中的类。这些类似乎包含在 Jakarta EE Faces API规范中,但当我使用以下 Maven 依赖项时,它们不包含在我们的项目中:

<dependency>
    <groupId>jakarta.faces</groupId>
    <artifactId>jakarta.faces-api</artifactId>
    <version>2.3.2</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

为了将它们放入类路径中,我必须使用 Oracle 依赖项:

<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-impl</artifactId>
    <version>2.2.20</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

显然,我们希望在某个时候完全放弃使用这个包,但我希望有一种方法可以将其包含在我们的雅加达迁移中。

jsf jakarta-ee

5
推荐指数
1
解决办法
2192
查看次数

Tomcat 将 servlet 转换为 javax.servlet.Servlet 而不是 jakarta.servlet.http.HttpServlet

我一直在徒劳地尝试实现 tomcat 9 的 jakarta servlet,而不是以前的 javax.servlet 实现(因为我的理解是 jakarta 包是前进的方向)。问题是,当我将浏览器指向我的 servlet 的 url 时,我收到以下错误...

java.lang.ClassCastException: class cti.nm.web.Index cannot be cast to class javax.servlet.Servlet (cti.nm.web.Index is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @48c76607; javax.servlet.Servlet is in unnamed module of loader java.net.URLClassLoader @621be5d1)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:432)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Thread.java:832)
Run Code Online (Sandbox Code Playgroud)

问题已经很明显了。Tomcat 正在尝试将我的 jakarta.servlet.http.HttpServlet 转换为 javax.servlet.Servlet,这显然不起作用。我无法想象的是如何告诉它 servlet 实际实现的类。

类本身被声明为...

package cti.nm.web;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

public class Index extends …
Run Code Online (Sandbox Code Playgroud)

tomcat servlets classcastexception maven

5
推荐指数
1
解决办法
6529
查看次数

安装后,我无法将 Java EE SDK 包含在我的项目中

我在这里不知所措!

我从这个链接 下载了Java EE 7 SDK http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-7-downloads-1956236.html

在安装过程中。我被迫安装GlassFish。与Java SE安装不同,我无法选择Java EE库的位置!

现在我只剩下GlassFish 了!我知道我迟早必须将我的应用程序部署到应用程序服务器中,但我只需要将Java EE库包含到我的 Eclipse java 项目中(甚至不是 eclipse web 项目。我使用ant组装我的WAR)。

我相信我可以继续将Java EE库包含在我的Run-Jetty-Run(从Eclipse运行 jetty 的Eclipse插件)运行配置类路径中,并且毫无问题地启动我的应用程序。

所以我的问题是:

  • Java EE SDK 文件在哪里?!?!//在答案的评论中回答
  • 为什么我被迫使用 GlassFish ?//回答如下
  • 我在这里有什么误解吗?我是否正确理解我可以在我的应用程序的类路径中包含 Java EE 库,该类路径在任何 servlet 容器中运行,并且我的应用程序没有任何问题?//回答如下
  • 我下载了GlassFish服务器适配器。配置了服务器,但是当我尝试包含GlassFish的运行时库时,我找不到任何已配置的服务器运行时库!检查所附的图片。//在答案的评论中回答
  • 是否仍然可以在没有库的情况下使用 ant 组装 WAR 文件,并通过EclipseGlassFish上运行它?//回答如下

我试图用最少的抽象来做事情,以了解更多并了解真正发生的事情。这就是为什么我更喜欢使用来自常规Eclipse java …

eclipse glassfish glassfish-4 java-ee-7 jakarta-ee

4
推荐指数
1
解决办法
4025
查看次数

JavaEE和Spring如何相关/不相关?

我是JavaEE和Spring Framework的新手.我很难理解如何只使用Spring Framework编写应用程序.我已经在互联网上看到,Spring Framework的目的是使企业级应用程序的开发更简单,而不是EJB开发(主要在EJB 2.x系列中).

使用JavaEE,我们有许多技术,如:1)EJB 2)JCP 3)JTA 4)JPA等.

在阅读Spring Framework时,我开始使用依赖注入,Spring AOP,Spring MVC(以及我正在阅读的其他人).

我很难理解如何使用Spring DI/AOP/MVC来制作成熟的企业应用程序?我从其中一篇帖子中读到,例如,对于事务管理,我们可以使用Spring自己的事务管理或使用JTA.我相信JTA是JavaEE的一部分,如果我们最终使用JavaEE的技术,那么Spring如何简化生活?

任何有助于我清楚这一点的答案都非常感谢.

java spring spring-mvc java-ee

4
推荐指数
1
解决办法
576
查看次数

"Visual Page Editor对Windows 64位有实验支持"

我正在使用Eclipse Luna和JBoss AS 7.当我在Eclipse中创建JSP页面时,我得到以下错误:

在此输入图像描述

我将服务器更改为Tomcat 7,但仍然遇到同样的错误.

这是怎么造成的,我该如何解决?

eclipse jboss jsp

4
推荐指数
1
解决办法
7809
查看次数

如何在命令行中为Tomcat编译servlet?错误:包javax.servlet不存在

编译Java文件时,我收到此错误消息:

error: package javax.servlet does not exist
Run Code Online (Sandbox Code Playgroud)

我为Jave EE SDK安装了一个大的.SH文件,Java版本给了我这个:

java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我需要安装其他东西吗?

我使用Tomcat 7作为Servlet容器,/Library/Tomcat/ 并使用命令行进行简单的文本编辑器.

java tomcat servlets compiler-errors osx-mountain-lion

3
推荐指数
1
解决办法
2万
查看次数

WildFly 12.0.0.Final JSF 2.3&f:websocket - 类加载器问题

当文档(行)插入MongoDB集合时,尝试让EJB通知我的XHTML JSF页面.

由于我之前的问题的答案得到了JSF 2.3的工作:

f:JSF 2.3中的websocket

然而,在将服务器端代码添加到我的EJB并尝试将我的EAR部署到WildFly 12.0.0.Final之后,我得到了一个用于PushContext的java.lang.ClassNotFoundException:

Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class com.notifywell.ejb.FoodsCosmeticsMedicinesEJB with ClassLoader ModuleClassLoader for Module "deployment.NOTiFYwell.ear.NOTiFYwellJAR.jar" from Service Module Loader

    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
    at java.lang.Class.getDeclaredFields(Class.java:1916)
    at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:72)
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
    ... 13 more
Caused by: java.lang.ClassNotFoundException: javax.faces.push.PushContext from [Module "deployment.NOTiFYwell.ear.NOTiFYwellJAR.jar" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:199)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    ... 18 more
Run Code Online (Sandbox Code Playgroud)

在EJB中使用:

@Inject
@Push
private PushContext push;
Run Code Online (Sandbox Code Playgroud)

包含在:

jboss-jsf-api_2.3_spec-2.3.3.SP1.jar
Run Code Online (Sandbox Code Playgroud)

当我添加@Inject@Push.时会发生这种情况.

WildFly 12和/或JSF …

cdi jboss-weld weld wildfly jsf-2.3

2
推荐指数
1
解决办法
1132
查看次数

我需要在Tomcat 7中包含什么才能使javax.persistence正常工作?

我正在尝试使用Java 7和Tomcat 7构建JSF/Hibernate应用程序.我已经安装了Java SDK和JavaEE SDK,并将javaee.jar和javaee-api-6.jar复制到我的Tomcat LIB文件夹中.通过我对这篇文章这篇文章的理解,我应该拥有我需要的所有罐子,据我所知,我在这个文件夹中没有其他罐子,这些罐子有相互冲突的资源.

  • javaee.jar文件包含看起来像Maven pom文件的内容,没有别的.我不确定它的价值是什么.

  • 我的javaee-api-6 jar大小约为950k,包含了我期望的所有.class文件.我正在使用的代码编译得很好,我只在尝试部署到Tomcat时看到错误.这些罐子来自玻璃鱼装置.奇怪的是文件ServletException.class文件只有366个字节.

  • 我在Eclipse中设置了Tomcat,以便IDE在部署时"接管"Tomcat,而不是部署到某个插件文件夹(默认行为).

  • 我正在使用的唯一相关包是来自javax.persistence的'Entity''Id'和'GeneratedValue'.

  • 我只尝试使用javaee-api-6.jar,并更名javaee-api.jarjavaee.jar没有变化.看起来它的文件名并不重要.

对Glassfish lib文件夹的深入检查确实显示了许多相关外观的jar,但不是完整的javaee包,所以我无法将Javaee-api-6.jar移出并移动它们,它们是不完整的,我得到了一个类似的错误表明(我假设)某些类的实现无法找到.

所以我的问题是:我需要在Tomcat 7中包含什么才能使javax.persistence正常工作?

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.getDeclaredMethods0(Native …
Run Code Online (Sandbox Code Playgroud)

tomcat hibernate jpa java-ee

0
推荐指数
1
解决办法
4905
查看次数

java ee sdk下载找不到jdk

我一直在计算机上使用eclipse开发JSP,servlet,applet,独立应用程序和其他java代码.最近,java作为其他成功的防病毒程序的一部分从我的计算机中删除.

现在,当我尝试加载eclipse时,我得到的消息是我的系统没有jre或jdk.

当我尝试下载java ee时,我只能找到这些下载选项,它们承诺提供java ee sdk.

但是,当我下载并运行安装文件时,安装程​​序会在整个过程中途停止,告诉我无法继续,因为我的计算机上没有找到jdk.它要求我手动指向jdk,但我不能这样做,因为我的机器上没有jdk.我能找到的唯一的jdk下载站点是这个,用于java se. 但是我需要java EE来开发jsp,servlets,applets等.

我没有找到任何解释如何整合这两者的信息.在过去,我似乎记得只能做一个java下载.

谁能告诉我如何下载java EE jdk?

java eclipse jsp servlets java-ee

0
推荐指数
1
解决办法
2212
查看次数

JSF WebApp 与 Tomcat(哪个版本?)

我想开发一个 JSF 2 Web 应用程序,但我对设置环境文件(即 web.xml 和 faces-config.xml)感到困惑

我想使用 JSF 2 (.xhtml)、Tomcat 9.0 和 Open JDK 11.0.2

我看过这个页面:http://tomcat.apache.org/whichversion.html但我不清楚这些列的确切含义,特别是(对于 Tomcat 9.0.31 行)

Servlet Spec 4.0:这是否意味着我必须在 web.xml 文件中设置 web-app version =“4.0”?JSP Spec 2.3:我应该设置什么?EL 3.0 规范:这是否意味着我必须在 faces-config.xml 文件中设置 faces-config version = "3.0" ?

谢谢你!

jsf tomcat version

0
推荐指数
1
解决办法
1796
查看次数