应该是一个送分题
在做一个web项目,测试JDBC,代码直接写到src下面的,运行可以通过,后来我想整理一下测试文件(共三个,一个util.java,一个test.java,一个.properties),就在src下面新建了一个package(JDBCTest),把文件全部扔进去了,后来手贱又运行了一次,却发现运行报错:
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class JDBCTest.JDBCUtil
at JDBCTest.JDBCTest.main(JDBCTest.java:33)
然后我拖出来就又可以运行,放进来就不行,搞不懂这是为啥,希望各位大佬指点一下,谢谢了
问题已解决:
网上搜索相关错误信息发现:JVM在加载类的时候,会初始化类里的静态变量,或执行静态块,如果这个时候抛出了异常,该类就会加载失败,那么以后任何使用到这个类的地方,都会抛出NoClassDefFoundError异常。
我在工具类里用到了ResourceBundle.getBundle()方法去读取同级目录下的.properties文件,因为考虑到是同一个目录,就没有使用绝对路径,后来改为绝对路径后就可以正常读取了。
一个好办法,你不要放进去
路径啊,你要是一开始用的绝对路径,重新放到包里去,路径肯定不一样了
关键是我没有用到绝对路径啊,都在同一个包下,我用绝对路径干啥嘛,这尼玛玄学了真的