设为首页 收藏本站
查看: 1942|回复: 0

[经验分享] Java异常sealing violation: package oracle.net.ns is sealed

[复制链接]

尚未签到

发表于 2016-8-7 06:57:14 | 显示全部楼层 |阅读模式
   今天在使用Java动态加载odbc Jar得到odbc驱动名字的时候,报错了,错误信息如下:
        

java.lang.SecurityException: sealing violation: package oracle.net.ns is sealed
at java.net.URLClassLoader.defineClass(URLClassLoader.java:227)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at com.huse.dyjar.得到驱动名字.getDriverName(得到驱动名字.java:47)
at com.huse.dyjar.得到驱动名字.main(得到驱动名字.java:17)

  
      代码如下:
  
       

import java.io.File;
import java.lang.reflect.Modifier;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class 得到驱动名字 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
File fs = new File("E:/新版lib/odbc15.jar");
getDriverName(fs, list);
for (String str : list) {
System.out.println(str);
}
}
public static void getDriverName(File fs, List<String> list) {
if (!fs.getName().endsWith(".zip") && !fs.getName().endsWith(".jar")) {
return;
}
try {
URLClassLoader urlClassLoader = new URLClassLoader(new URL[] { fs
.toURI().toURL() });
JarFile zip = new JarFile(fs);
Enumeration<JarEntry> enu = zip.entries();
String className;
String tempName;
while (enu.hasMoreElements()) {
JarEntry entry = (JarEntry) enu.nextElement();
if (!entry.isDirectory()) {
if ((tempName = entry.getName()).endsWith(".class")
&& tempName.indexOf("$") == -1) {
// 将驱动类路径中的/替换成.
className = tempName.substring(0,
tempName.lastIndexOf(".class")).replaceAll("/",
".");
// 这个异常一般是由于classpath中有多个jar包都包含同样的java包,比如oracle.net.ns
// sealing violation: package oracle.net.ns is sealed
if (!"".equals(className)) {
Class c = null;
c = urlClassLoader.loadClass(className);
if (java.sql.Driver.class.isAssignableFrom(c)// 判断驱动类是java.sql.Driver的子类
&& !Modifier.isAbstract(c.getModifiers())) {// 判断驱动类是否为一个抽象类
list.add(className);
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
} catch (Error ex) {
// ex.printStackTrace();
}
}
}
   这个错误是因为classpath中有多个jar包都包含同样的java包,比如oracle.net.ns,说明白点就是classpath下面有类似jar存在,如odbc6.jar。
   
     全文完。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-254090-1-1.html 上篇帖子: 编码,JSP编码,Oracle编码,开发中编码问题 下篇帖子: ORACLE数据库锁查看与解锁
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表