前回作成したJFaceのアプリをEclipseから起動します。
Eclipseから通常のJavaアプリと同様に起動しましたが。。
java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IProgressMonitor
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
とのこと。このクラスは、pluginフォルダのorg.eclipse.equinox.common_3.6.0.v20110523.jar
に含まれているので、プロジェクトのビルドパスに追加しました。
もう1回実行してみると、
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-2133 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:108)
at org.eclipse.swt.internal.win32.OS.<clinit>(OS.java:46)
at org.eclipse.swt.internal.win32.TCHAR.<clinit>(TCHAR.java:30)
at org.eclipse.swt.widgets.Widget.<clinit>(Widget.java:83)
at org.eclipse.jface.window.Window.createShell(Window.java:487)
at org.eclipse.jface.window.Window.create(Window.java:430)
at org.eclipse.jface.window.Window.open(Window.java:790)
at com.hcc_soft.geo.core.view.swt.CoolBarApplicationWindow.main(CoolBarApplicationWindow.java:524)
SWTのネイティブDLLがパスにない、というエラーなので、swt-win32-2133.dllをEclipseのプロジェクト直下にコピーしてみました。その結果、
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\eclipse3\workspace\HccMapCore3\swt-win32-2133.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:108)
開発PCは64ビットでした。なのに開発に使っていたswt.jarが32ビット版なのでエラーになったようです。(古いPCのものを流用していました)
調べたところ、
http://archive.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/winPlatform.php
下の方の「SWT Binary and Source 」から64ビット版のSWTがダウンロードできました。
解凍すると、中にswt.jarが入っているので、プロジェクトのビルドパスに設定します。
DLLはswt.jarをさらに解凍すると
swt-win32-3655.dll
swt-awt-win32-3655.dll
swt-gdip-win32-3655.dll
swt-wgl-win32-3655.dll
の4ファイルあったので、とりあえず全てプロジェクト直下にコピーしました。
再度実行。。。。。
動作しました。JFaceアプリについて、これからもう少し勉強してみたいと思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます