Articles of Java的

org.jruby.Main上的NoClassDefFoundError

我试图使用JRuby 1.4.0RC1在Windows机器上安装hpricot gem。 我试图按照相关问题的build议(请参阅 – > 安装JRuby的hpricot )。 根据答案的build议,我把hpricot的git头从它的dir中跑了出来: jruby -S rake package_jruby cd pkg sudo jgem install ./hpricot-0.8.1-jruby.gem 但是,当我运行这个我得到以下NoClassDefFoundError: Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/Main Caused by: java.lang.ClassNotFoundException: org.jruby.Main at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) Could not find the […]

如何解决“java.lang.UnsatisfiedLinkError:无法find依赖库”没有System32?

我正在开发Eclipse上的Java项目,通过JNI使用C ++ OpenCV库。 一些image processingalgorithm是在本机端用OpenCV实现的,我希望从JNI中使用它们。 我build立了一个C ++ DLL项目来链接到Java,这导致了一个MyLibrary.dll文件。 我使用GCC 6.3编译器编译了OpenCV,并在Eclipse CDT上使用相同的GCC 6.3编译器编译C ++代码(以及MinGW Linker)。 我也检查是否有任何依赖问题使用Dependency Walker 。 到目前为止,我没有错误。 之后,我尝试从Java代码加载库,如下所示: System.loadLibrary("MyLibrary") 我已经使用-Djava.library.path=path\to\MyLibrary设置path,并确保JVM知道本地库的地址。 我还在MyLibrary.dll旁边添加了所需的OpenCV库。 但是,我得到以下错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: MyLibrary.dll: Can't find dependent libraries at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) … 然后问题消失,当我将依赖的OpenCV库移动到System32文件夹。 我的问题是 我怎么能解决这个问题, 而不移动所需的DLL文件到System32文件夹?

Java时区已经搞乱了

我正在运行一个Tomcat应用程序,我需要显示一些时间值。 不幸的是,现在是一个小时的时间了。 我看着它,发现我的默认TimeZone被设置为: sun.util.calendar.ZoneInfo[id="GMT-08:00", offset=-28800000, dstSavings=0, useDaylight=false, transitions=0, lastRule=null] 而不是太平洋时区。 当我尝试打印默认时区的显示名称时会进一步显示 ,并显示 “GMT-08:00”,这似乎表明它没有正确设置为美国太平洋时区。 我在Ubuntu Hardy Heron上运行,从Gutsy Gibbon升级。 是否有一个configuration文件可以更新,告诉JRE使用Pacific的所有相关夏令时信息? 我的机器上的时间显示正确,所以它似乎不是一个操作系统范围的错误configuration。 好的,这是一个更新。 一位同事build议我更新我的/ etc / profile中的JAVA_OPTS以包含“-Duser.timezone = US / Pacific”,该工作正常(我也看到了CATALINA_OPTS,我也更新了它)。 实际上,我只是将变化导出到variables中,而不是使用新的/ etc / profile(稍后重新启动会接受更改,我将变为黄金)。 不过,我仍然认为有一个更好的解决scheme…应该有一个configurationJava的地方,说什么时区正在使用,或者它是如何抓住时区。 如果有人知道这样的设置,这将是很棒的,但现在这是一个体面的解决方法。 我使用1.5,这绝对是一个DST问题。 正如你所看到的,时区被设置为不使用夏令时。 我的信念是一般设定为-8抵消,而不是特定的太平洋时区。 由于通用-8偏移量没有夏令时信息,所以当然不会使用它,但问题是,我怎样告诉Java在启动时使用太平洋时区? 我不是在寻找一个程序化的解决scheme,它应该是一个configuration解决scheme。