大佬教程收集整理的这篇文章主要介绍了如何动态加载AttachProvider(attach.dll),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_8@
@H_403_8@
public static void main(String[] args) throws Exception { Path bin = Paths.get(System.getProperty("user.dir"),"bin").toAbsolutePath(); switch (System.getProperty("os.arch")) { case "amd64": bin = bin.resolve("win64"); break; default: bin = bin.resolve("win32"); } // Dynamic setTing of java.library.path only seems not sufficient System.setProperty("java.library.path",System.getProperty("java.library.path") + File.pathSeparator + bin.toString()); // So I try to manual loading attach.dll. This is not sufficient too. System.load(bin.resolve("attach.dll").toString()); // I'm using com.sun.tools.attach in my app new myApp(); }
如果我用jdk(在Normall jre中)运行它,它会向我报告:@H_403_8@
@H_403_8@
java.util.serviceConfigurationError: com.sun.tools.attach.spi.AttachProvider: Provider sun.tools.attach.WindowsAttachProvider Could not be instantiated: java.lang.UnsatisfiedLinkError: no attach in java.library.path Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: no providers installed at com.sun.tools.attach.VirtualMachine.attach(...
如何安装附件提供程序而不指定-Djava.library.path在启动时指向attach.dll?@H_403_8@
@H_403_8@
所以你必须在java.library.path中指定路径.@H_403_8@
该System属性在JVM生命周期的早期设置,并且不能通过标准方法进行修改.@H_403_8@
因此,传统的解决方案是在启动JVM时传递适当的java.library.path.@H_403_8@
或者,您可以查看hack以在使用反射启动JVM后更改此属性.我还没有尝试过这些.@H_403_8@
@H_403_8@
System.setProperty( "java.library.path","/path/to/libs" ); Field fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" ); fieldSysPath.setAccessible( true ); fieldSysPath.set( null,null );
以上是大佬教程为你收集整理的如何动态加载AttachProvider(attach.dll)全部内容,希望文章能够帮你解决如何动态加载AttachProvider(attach.dll)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。