JavaWeb java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension

huangapple go评论125阅读模式
英文:

JavaWeb java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension

问题

我在尝试使用Glassfish 5.0运行JavaWeb项目时遇到了错误。每次它试图从我的SQL数据库中获取数据时,都会出现以下错误。 <br>
StandardWrapperValve[ListadoPersonas]: Servlet.service() for servlet ListadoPersonas threw exception
java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension

以下是调用从数据库获取数据的函数的servlet ListadoEstadosCiviles

  1. GestorPersonas g = new GestorPersonas();
  2. ArrayList&lt;EstadoCivil&gt; lista = g.obtenerEstadosCiviles();
  3. for (EstadoCivil estadoCivil : lista) {
  4. out.println("&lt;tr&gt;&lt;td&gt;" + estadoCivil.getId() + "&lt;/td&gt;&lt;td&gt;" + estadoCivil.getNombre() + "&lt;/td&gt;&lt;/tr&gt;");
  5. }

以下是GestorPersonas() 构造函数:

  1. public GestorPersonas() {
  2. try {
  3. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  4. } catch (ClassNotFoundException ex) {
  5. Logger.getLogger(GestorPersonas.class.getName()).log(Level.SEVERE, null, ex);
  6. }
  7. }

以下是obtenerEstadosCiviles() 方法:

  1. public ArrayList&lt;EstadoCivil&gt; obtenerEstadosCiviles() {
  2. ArrayList&lt;EstadoCivil&gt; lista = new ArrayList&lt;&gt;();
  3. try {
  4. Connection conn = DriverManager.getConnection(CONN,USER,PASS);
  5. Statement st = conn.createStatement();
  6. ResultSet rs = st.executeQuery("select * from EstadosCiviles");
  7. // 如果select语句只返回一行记录,使用if而不是while
  8. while (rs.next()) {
  9. int id = rs.getInt("id");
  10. String nombre = rs.getString("nombre");
  11. EstadoCivil ec = new EstadoCivil(id, nombre);
  12. lista.add(ec);
  13. }
  14. rs.close();
  15. st.close();
  16. conn.close();
  17. } catch (SQLException ex) {
  18. Logger.getLogger(GestorPersonas.class.getName()).log(Level.SEVERE, null, ex);
  19. }
  20. return lista;
  21. }

我没有问题将我的Java应用程序连接到SQL,我认为问题出在Glassfish上,但我无法弄清楚为什么它不起作用。

这是调用obtenerEstadosCiviles()函数的servlet,我期望表中充满数据。

期望效果:
JavaWeb java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension

更新

我刚刚检查了我的插件,发现Java Web和EE已经激活,但"Active"标志似乎没有激活。这可能是问题的一部分吗?
JavaWeb java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension

英文:

I'm getting an error when trying to use a JavaWeb project using Glassfish 5.0. Everytime it tries to bring data from my SQL Database it gives me this error. <br>
StandardWrapperValve[ListadoPersonas]: Servlet.service() for servlet ListadoPersonas threw exception
java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension

Here is the servlet ListadoEstadosCiviles where I call the function which brings the data back from my database

  1. GestorPersonas g = new GestorPersonas();
  2. ArrayList&lt;EstadoCivil&gt; lista = g.obtenerEstadosCiviles();
  3. for (EstadoCivil estadoCivil : lista) {
  4. out.println(&quot;&lt;tr&gt;&lt;td&gt;&quot; + estadoCivil.getId() + &quot;&lt;/td&gt;&lt;td&gt;&quot; + estadoCivil.getNombre() + &quot;&lt;/td&gt;&lt;/tr&gt;&quot;);
  5. }

Here is GestorPersonas() constructor:

  1. public GestorPersonas() {
  2. try {
  3. Class.forName(&quot;com.microsoft.sqlserver.jdbc.SQLServerDriver&quot;);
  4. } catch (ClassNotFoundException ex) {
  5. Logger.getLogger(GestorPersonas.class.getName()).log(Level.SEVERE, null, ex);
  6. }
  7. }

Here is obtenerEstadosCiviles() method

  1. public ArrayList&lt;EstadoCivil&gt; obtenerEstadosCiviles() {
  2. ArrayList&lt;EstadoCivil&gt; lista = new ArrayList&lt;&gt;();
  3. try {
  4. Connection conn = DriverManager.getConnection(CONN,USER,PASS);
  5. Statement st = conn.createStatement();
  6. ResultSet rs = st.executeQuery(&quot;select * from EstadosCiviles&quot;);
  7. // Si el select devuelve una &#250;nica fila, en lugar de while, se usa un if
  8. while (rs.next()) {
  9. int id = rs.getInt(&quot;id&quot;);
  10. String nombre = rs.getString(&quot;nombre&quot;);
  11. EstadoCivil ec = new EstadoCivil(id, nombre);
  12. lista.add(ec);
  13. }
  14. rs.close();
  15. st.close();
  16. conn.close();
  17. } catch (SQLException ex) {
  18. Logger.getLogger(GestorPersonas.class.getName()).log(Level.SEVERE, null, ex);
  19. }
  20. return lista;
  21. }

I have no problem connecting my java application to sql, I think the problem is with glassfish but i cant figure out why it is not working

This is the servlet that is calling obtenerEstadosCiviles() function, I expect that table full with data

What I expect:
JavaWeb java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension

UPDATE

I've just checked my plugins and it appears that Java Web and EE it´s activated but the "Active" symbol doesnt appears active. Could this be part of the problem?
JavaWeb java.lang.NoClassDefFoundError: sun/security/ssl/HelloExtension

答案1

得分: 6

基本上是相同的问题,最终通过这个解决方案解决了。

在你的glassfish文件夹中,进入glassfish5/glassfish/modules/endorsed/目录,用WinRAR或你偏好的解压工具打开grizzly-npn-bootstrap.jar文件。

删除sun文件夹,然后尝试重新运行你的程序。

英文:

Had basically the same problem, eventually solved it with this solution here.

In your glassfish folder go to glassfish5/glassfish/modules/endorsed/ and open the grizzly-npn-bootstrap.jar file with winrar or your preferred unzipper.

Delete the sun folder and try running your program again.

huangapple
  • 本文由 发表于 2020年9月30日 23:13:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/64140616.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定