gpt4 book ai didi

java - 如何在 IntelliJ IDEA 的 Web 应用程序项目中部署 Maven 依赖项?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:02 32 4
gpt4 key购买 nike

我关注了these steps on JetBrain's site创建 Web 应用程序并让 GlassFish 在本地运行。它运行良好,我可以将代码的输出嵌入到 JSP 项目的 src 树中,并在 Web 浏览器中查看它。当我添加 Maven 依赖项时,问题就开始了。我加了

<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>oauth2-oidc-sdk</artifactId>
<version>4.9</version>
</dependency>

到我的 pom.xml 并在我的代码中使用依赖项。 Maven 安装依赖项,一切正常,但是当我单击绿色箭头在 GlassFish 中运行它时,当浏览器打开时出现此错误:

org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP

PWC6199: Generated servlet error: source value 1.5 is obsolete and will be removed in a future release

PWC6199: Generated servlet error: target value 1.5 is obsolete and will be removed in a future release

PWC6199: Generated servlet error: To suppress warnings about obsolete options, use -Xlint:-options.

PWC6197: An error occurred at line: 8 in the jsp file: /index.jsp PWC6199: Generated servlet error: cannot access com.nimbusds.oauth2.sdk.SerializeException class file for com.nimbusds.oauth2.sdk.SerializeException not found

这是 index.jsp 的源代码:

<%@ page import="com.idsrvjpoc.IdentityServerConfiguration" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Redirect</title>
</head>
<body>
<% String redirectUrl = new IdentityServerConfiguration().getRedirectUrl(); %>
<a href="<%=redirectUrl%>"><%=redirectUrl%></a>
</body>
</html>

在我的模块的 Java 编译器设置中,目标字节码版本设置为 1.8,我使用的是最新版本的 1.8 JDK。

我发现了另一个建议将依赖项的 JAR 文件复制到 glassfish4\glassfish\domains\domain1\lib 文件夹的 SO 答案,所以我尝试了它并更改了错误:

java.lang.NoClassDefFoundError: com/nimbusds/oauth2/sdk/id/ClientID

不再有过时的目标值或找不到类文件,而是一个 NoClassDefFoundError。现在是不同的类(class)了。 SerializeException 和 ClientID 都在同一个 JAR 中,我可以提取 JAR 并在我认为正确的位置查看两个 .class 文件。

这是 IdentityServerConfiguration.java 的源代码:

package com.idsrvjpoc;

import com.nimbusds.oauth2.sdk.*;
import com.nimbusds.oauth2.sdk.id.*;

import java.net.URI;
import java.net.URISyntaxException;

public class IdentityServerConfiguration {
public String getRedirectUrl() throws URISyntaxException, SerializeException {
URI authzEndpoint = new URI("myAuthEndpoint");
ClientID clientID = new ClientID("1234");
Scope scope = new Scope("openid");
URI callback = new URI("http://localhost:8080/IdentityServerPoc_war_exploded/return.jsp");
State state = new State();

AuthorizationRequest request = new AuthorizationRequest.Builder(
new ResponseType(ResponseType.Value.CODE), clientID).
scope(scope).
state(state).
redirectionURI(callback).
endpointURI(authzEndpoint).
build();

return request.toURI().toString();
}
}

我错过了什么?

E:我只是尝试从 GlassFish lib 文件夹中删除 JAR 并编辑 war Artifact ,在“输出布局”选项卡上,我将这些 jar 从可用元素移动到 WEB-INF/lib 目录,我看到它们被复制了在那里,当我建立,但仍然是同样的错误。

我还尝试让 Artifact 将 JAR 中的 .class 文件提取到 WEB-INF/classes 文件夹中。同样,我在项目的 out 文件夹中的 WEB-INF/classes 文件夹中看到它们,但仍然是相同的 java.lang.NoClassDefFoundError: com/nimbusds/oauth2/sdk/id/ClientID

E2:这是完整的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>IdSrvJPoc</groupId>
<artifactId>IdentityServerJavaPoc</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>oauth2-oidc-sdk</artifactId>
<version>4.9</version>
</dependency>
</dependencies>
</project>

最佳答案

由于您收到 NoClassDefFoundError,因此您的 lib 文件夹中可能仍然缺少依赖项。确保还包括任何 Numbus 依赖项。

关于java - 如何在 IntelliJ IDEA 的 Web 应用程序项目中部署 Maven 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33907478/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com