JavaWeb java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension
JavaWeb java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension
我在使用 Glassfish 5.0 尝试使用 JavaWeb 项目时遇到错误。每次它试图从我的 SQL 数据库中获取数据时,它都会给我这个错误。
StandardWrapperValve[ListadoPersonas]:Servlet.service() 对于 servlet ListadoPersonas 抛出异常
java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension
这是 servlet ListadoEstadosCiviles
,我在其中调用了从我的数据库中取回数据的函数
GestorPersonas g = new GestorPersonas();
ArrayList<EstadoCivil> lista = g.obtenerEstadosCiviles();
for (EstadoCivil estadoCivil : lista) {
out.println("<tr><td>" + estadoCivil.getId() + "</td><td>" + estadoCivil.getNombre() + "</td></tr>");
}
这里是GestorPersonas()
构造函数:
public GestorPersonas() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(GestorPersonas.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是obtenerEstadosCiviles()
方法
public ArrayList<EstadoCivil> obtenerEstadosCiviles() {
ArrayList<EstadoCivil> lista = new ArrayList<>();
try {
Connection conn = DriverManager.getConnection(CONN,USER,PASS);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from EstadosCiviles");
// Si el select devuelve una única fila, en lugar de while, se usa un if
while (rs.next()) {
int id = rs.getInt("id");
String nombre = rs.getString("nombre");
EstadoCivil ec = new EstadoCivil(id, nombre);
lista.add(ec);
}
rs.close();
st.close();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(GestorPersonas.class.getName()).log(Level.SEVERE, null, ex);
}
return lista;
}
将我的 java 应用程序连接到 sql 没有问题,我认为问题出在 glassfish 但我无法弄清楚为什么它不起作用
这是调用 obtenerEstadosCiviles()
函数的 servlet,我希望 table 充满数据
我的期望:
更新
我刚刚检查了我的插件,Java Web 和 EE 似乎已激活,但“激活”符号似乎没有激活。这可能是问题的一部分吗?
遇到了基本相同的问题,最终用 this solution here 解决了。
在您的 glassfish 文件夹中,转到 glassfish5/glassfish/modules/endorsed/ 并使用 winrar 打开 grizzly-npn-bootstrap.jar 文件或者你喜欢的解压器。
删除 sun 文件夹并再次尝试 运行 您的程序。
我在使用 Glassfish 5.0 尝试使用 JavaWeb 项目时遇到错误。每次它试图从我的 SQL 数据库中获取数据时,它都会给我这个错误。
StandardWrapperValve[ListadoPersonas]:Servlet.service() 对于 servlet ListadoPersonas 抛出异常
java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension
这是 servlet ListadoEstadosCiviles
,我在其中调用了从我的数据库中取回数据的函数
GestorPersonas g = new GestorPersonas();
ArrayList<EstadoCivil> lista = g.obtenerEstadosCiviles();
for (EstadoCivil estadoCivil : lista) {
out.println("<tr><td>" + estadoCivil.getId() + "</td><td>" + estadoCivil.getNombre() + "</td></tr>");
}
这里是GestorPersonas()
构造函数:
public GestorPersonas() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(GestorPersonas.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是obtenerEstadosCiviles()
方法
public ArrayList<EstadoCivil> obtenerEstadosCiviles() {
ArrayList<EstadoCivil> lista = new ArrayList<>();
try {
Connection conn = DriverManager.getConnection(CONN,USER,PASS);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from EstadosCiviles");
// Si el select devuelve una única fila, en lugar de while, se usa un if
while (rs.next()) {
int id = rs.getInt("id");
String nombre = rs.getString("nombre");
EstadoCivil ec = new EstadoCivil(id, nombre);
lista.add(ec);
}
rs.close();
st.close();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(GestorPersonas.class.getName()).log(Level.SEVERE, null, ex);
}
return lista;
}
将我的 java 应用程序连接到 sql 没有问题,我认为问题出在 glassfish 但我无法弄清楚为什么它不起作用
这是调用 obtenerEstadosCiviles()
函数的 servlet,我希望 table 充满数据
我的期望:
更新
我刚刚检查了我的插件,Java Web 和 EE 似乎已激活,但“激活”符号似乎没有激活。这可能是问题的一部分吗?
遇到了基本相同的问题,最终用 this solution here 解决了。
在您的 glassfish 文件夹中,转到 glassfish5/glassfish/modules/endorsed/ 并使用 winrar 打开 grizzly-npn-bootstrap.jar 文件或者你喜欢的解压器。
删除 sun 文件夹并再次尝试 运行 您的程序。