今天在使用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。
全文完。
相关推荐
JDK11是Oracle公司发布的Java平台标准版(Java SE)的一个重要版本,它在2018年9月发布,带来了许多新特性和改进。这个开源免费版的JDK11,为开发者提供了无需付费的高质量开发环境,推动了Java社区的广泛采用和创新...
Java JDK 21.0.2 是Oracle公司发布的Java Standard Edition (Java SE) 平台的一个重要版本,尤其因其作为长期支持(LTS)版本的身份而备受关注。长期支持版本意味着它将获得更长时间的技术支持和安全更新,是企业级...
lotus 本地运行1,lotus 本地运行2,16核 1,lotus 本地运行 # lotus-storage-miner info ...2020-02-03T21:24:32.671+0800 INFO sectors sealing/states.go:16 performing filling up rest of the sect
2014最新文件压缩器,进行完美加密数据,不解压无法查看被压缩的文件, 可以解压使用该软件压缩的.sp压缩包.
2020-01-25T14:34:35.251+0800 INFO sectors sealing/states.go:16 performing filling up rest of the sector... {sector: 10} 2020-01-25T14:34:35.281+0800 INFO sectors sealing/states.go:47
But because the gear relative to the bearing of the two-stage cylindrical gear reducer is arranged asymmetrically, the load distribution along the tooth direction is uneven, and the shaft stiffness ...
《AB PLC控制双按钮手动封口机程序解析》 在工业自动化领域,PLC(可编程逻辑控制器)扮演着至关重要的角色,它以其强大的逻辑控制能力和灵活的编程特性被广泛应用于各种设备的控制系统中。本资料主要探讨的是使用...
Java Development Kit(JDK)是Java编程语言的核心组件,它包含Java运行时环境(JRE)、编译器、工具集和其他必要的库,使得开发者能够编写、编译和调试Java应用程序。Oracle JDK是官方的Java开发工具包,由甲骨文...
Table of Contents 1. Grounding and Planes...................................................................................................... 7 1.1 Filters .............................................
BS EN 16119-2021 LPG equipment and accessories. Sealing caps and plugs for LPG cylinder and pressure vessel valves.pdf
The entire vehicle is fully sealed, allowing self-compaction, self-discharge, and all污水 during the compression process to be collected in the污水 compartment, effectively addressing the issue of ...
34. 行李箱盖密封条(Back PNL Mlod'g Sealing):保证行李箱的密封性。 35. 行李箱盖装饰条(Back PNL Mlod'g Chrom Garnish):提升后备箱的外观。 36. 增强件(Gusset):加强车身结构的刚性。 37. 行李箱盖...
The requirements of sealing for optical windows and laser cavity mirrors are briefly discussed in this paper and several sealing ...mirrors is described and some sealing characteristics are presented.
##### 封存(Sealing) 除了证明之外,Intel® SGX还提供了“封存”功能,这是一种允许容器内的软件将其秘密信息加密后保存到非易失性存储器中的机制。这些秘密信息可能包括密钥、认证令牌或其他敏感数据。封存后的...
* 产品类型:SMD SEAM SEALING CXO 3.2 × 2.5 *Nominal Freq.:24.000000MHz * 产品编号:7X24000007 * 版本号:A1 同时,datasheet还介绍了TXC公司的绿色产品标准,该标准基于国际标准,并在TXC的网站上公布和...
* 顶封(Top sealing):将裸电芯包上包装铝箔,对顶部和侧边进行热封装。 * 注液(Inject):将电解液加入到电芯中,并将电芯完全封住。 工艺流程控制点 在叠片工艺中,需要控制以下关键工艺参数: * 搅拌速度、...
The assembly of components in the aerospace industry is currently supported through procedures based on the generation of work instructions. This documentation describes both the sequence of ...
3. 胶贴/密封(Glueing/Sealing):对于需要精确施加粘合剂或进行密封作业的场合,IRB2400展现了其出色的灵活性和精确度。 4. 研磨/抛光(Grinding/Polishing):通过执行复杂的研磨和抛光工艺,IRB2400可以帮助...