我有时被迫离开办公室工作,这意味着我需要VPN进入我的实验室.我注意到在这种情况下使用Eclipse进行远程调试非常慢.缓慢到调试器连接到远程jvm需要5-7分钟的时间点.连接后,逐步通过断点/线路每次可能需要20-30秒,而且它通常会断开连接,使我不得不重新开始.
任何人都能解释为什么会这样,即使没有可用的解决方案?考虑到远程调试器的行为,我通过VPN的延迟几乎不是人们期望的.我通过VPN做各种其他的事情,最小的滞后/阻塞.
我真的很难理解为什么远程调试器受到VPN的困扰,基本上每个其他网络操作都没问题.
谢谢,
我正在尝试使用Java中的JAXB将XML文件解组为生成的类结构.我遇到了一个令人困惑的问题,我所使用的类加载器JAXBContext.newInstance(packageName, classLoader)显然找不到一些必要的类来实例化模式类,但是当我手动搜索所提供的类加载器以获取所需的类时,它们就在那里:
URLClassLoader cl = this.getJaxbClassloader();
try
{
cl.loadClass("org.postgresql.util.PGInterval");
Log.error("Found class [" + name + "] in provided classloader");
}
catch (ClassNotFoundException e)
{
Log.error("Unable to find class [" + name + "] in provided classloader");
}
JAXBContext ctx = JAXBContext.newInstance( "com.comp.gen", cl);
Run Code Online (Sandbox Code Playgroud)
该getJaxbClassloader() 方法只是创建一个新的URLClassLoader,加载生成的类所需的一些特定jar,然后将系统类加载器设置为父类.生成的类使用了一些我放入类加载器的postgresql库,这是我遇到问题的资源.JAXB正确地在提供的包中找到ObjectFactory类,它只是生成的类本身的实例化,这似乎是问题所在.
运行此代码的结果是手动调用cl.loadClass("org.postgresql.util.PGInterval");工作正常,它记录第一个语句,说它找到了类,没有抛出异常.但是当JAXBContext实例化时,它会在完全相同的资源上抛出CNFE:
java.lang.ClassNotFoundException: org.postgresql.util.PGInterval
at java.net.URLClassLoader.findClass(URLClassLoader.java:600)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:772)
at java.lang.ClassLoader.loadClass(ClassLoader.java:745)
at java.lang.ClassLoader.loadClass(ClassLoader.java:726)
... 78 more
Run Code Online (Sandbox Code Playgroud)
更彻底的堆栈跟踪:
java.lang.NoClassDefFoundError: org.postgresql.util.PGInterval
at java.lang.Class.getDeclaredFieldsImpl(Native Method)
at java.lang.Class.getDeclaredFields(Class.java:740)
at com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getDeclaredFields(ReflectionNavigator.java:249)
at com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getDeclaredFields(ReflectionNavigator.java:58)
at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.findFieldProperties(ClassInfoImpl.java:370) …Run Code Online (Sandbox Code Playgroud)