![](/img/trans.png)
[英]java Maven Project in IntelliJ IDEA, How do I find unneeded dependencies?
[英]How do I deploy maven dependencies in a web application project in IntelliJ IDEA?
我在JetBrain的网站上按照这些步骤创建了一个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:JSP的Javac编译出错
PWC6199:生成的servlet错误:源值1.5已过时,将在以后的版本中删除
PWC6199:生成的servlet错误:目标值1.5已过时,将在以后的版本中删除
PWC6199:生成的servlet错误:要禁止有关过时选项的警告,请使用-Xlint:-options。
PWC6197:jsp文件中的行:8发生错误:/index.jsp PWC6199:生成的servlet错误:无法访问com.nimbusds.oauth2.sdk.SerializeException类文件中找不到com.nimbusds.oauth2.sdk.SerializeException
这是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。
我发现另一个SO答案建议将依赖项的JAR文件复制到glassfish4 \\ glassfish \\ domains \\ domain1 \\ lib文件夹,所以我尝试了它并且它改变了错误:
java.lang.NoClassDefFoundError:com / nimbusds / oauth2 / sdk / id / ClientID
没有找到过时的目标值或类文件,而是NoClassDefFoundError。 现在这是一个不同的课程。 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工件,在Output Layout选项卡上我将jar从Available Elements移动到WEB-INF / lib目录,我发现当我将它们复制到那里时构建,但仍然是相同的错误。
我还尝试让工件将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依赖项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.