68957


<https://archive.eclipse.org/eclipse/downloads/drops/R-3.1.1-200509290840/>

こちらから eclipse 3.1.1 というのをインストールして起動してみたのですが

[code]

    An error has occured. See ...
    
[/code]

というエラーが出て

指定されているログファイルを見ると

[code]

    !SESSION 2020-07-25 19:30:36.464 -----------------------------------------------
    eclipse.buildId=M20050929-0840
    java.version=14.0.1
    java.vendor=Oracle Corporation
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ja_JP
    Command-line arguments:  -os win32 -ws win32 -arch x86
    
    !ENTRY org.eclipse.osgi 2020-07-25 19:30:37.755
    !MESSAGE Application error
    !STACK 1
    java.lang.UnsatisfiedLinkError: D:\eclipse\configuration\org.eclipse.osgi\bundles\61\1\.cp\swt-win32-3139.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
        at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2452)
        at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2508)
        at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2704)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2650)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:807)
        at java.base/java.lang.System.loadLibrary(System.java:1907)
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
        at org.eclipse.swt.internal.win32.OS.<clinit>(OS.java:18)
        at org.eclipse.swt.widgets.Display.<clinit>(Display.java:125)
        at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:381)
        at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:155)
        at org.eclipse.ui.internal.ide.IDEApplication.createDisplay(IDEApplication.java:128)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:79)
        at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
        at org.eclipse.core.launcher.Main.run(Main.java:973)
        at org.eclipse.core.launcher.Main.main(Main.java:948)
    
[/code]

となっているのですがこれを動かすにはほかにもライブラリ類が必要なのでしょうか

* * *

[SWTを用いた JavaからWin32APIへのアクセス
サンプル](http://www.igapyon.jp/igapyon/diary/2005/ig051228.html)

こちらの記事と似たようなことを行っている古いソースコードがあって  
それを１度だけでいいので動かしたいです

最新版をいれたところ

[code]

    int hWnd = OS.FindWindow(null, new TCHAR(OS.CP_INSTALLED, "(無題) - 秀丸",
            true));
    
[/code]

と同等のコードで OS.CP_INSTALLED 変数が存在しないというエラーが出たので  
そのブログ記事と同じバージョンをいれようとした次第です

この記事と全く同じではないんですが  
ほぼ同じメソッドを使ったコードを win7 64bit 環境で動いたことは確実なので  
32bit / 64bit のせいで動かないということはないはずなのですが…

* * *

現在の実行環境は  
Windows 10 64bit の Power Shell 7 上  
インストールした Java の release は以下です

[code]

    IMPLEMENTOR="Oracle Corporation"
    JAVA_VERSION="14.0.1"
    JAVA_VERSION_DATE="2020-04-14"
    MODULES="java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.vm.ci jdk.management jdk.unsupported jdk.internal.vm.compiler jdk.aot jdk.internal.jvmstat jdk.attach jdk.charsets jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.crypto.mscapi jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.foreign jdk.internal.opt jdk.jdeps jdk.jlink jdk.incubator.jpackage jdk.internal.le jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management.agent jdk.jconsole jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.rmic jdk.scripting.nashorn jdk.scripting.nashorn.shell jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported.desktop jdk.xml.dom jdk.zipfs"
    OS_ARCH="x86_64"
    OS_NAME="Windows"
    
[/code]

です


CC BY-SA 4.0
2020-07-25T10:39:18.663
68951
2020-07-25T16:30:47.827
2020-07-25T16:30:47.827
3060
question
java windows eclipse
古い Eclipse の起動時に UnsatisfiedLinkError が発生する


ダウンロードされた `3.1.1-200509290840` というバージョンは今から **約15年前** にリリースされたもので、  
[リリースノート](http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_1.html#TargetOperatingEnvironments)
を見ても Windows については XP しか言及されていません。

Java のバージョン表記は時々ルールが変わるので単純比較はできませんが、リリースノートでは `1.4.2_08`
と書かれている一方、あなたの実行環境ではログを見る限り `14.0.1` とだいぶ開きがあるのも気になる点です。

また、エラーログには以下のようなメッセージが含まれているので、実行環境の32bit/64bitをチェックする必要がありそうです。

[code]

    Can't load IA 32-bit .dll on a AMD 64-bit platform
    
[/code]

今すぐ試す環境にないので簡単な紹介に留めますが、例えば以下のようなブログ記事が参考になるかもしれません。

[32bit DLL を 64bit
OS上のEclipseから使用する](http://zellij.hatenablog.com/entry/20130919/p1)


CC BY-SA 4.0
2020-07-25T11:36:25.653
68955
2020-07-25T11:36:25.653
3060
68951
answer


  * [Bug 531097 - [Win32] Remove support for Windows versions older than Vista](https://bugs.eclipse.org/bugs/show_bug.cgi?id=531097)
    * [コード差分](https://github.com/eclipse/eclipse.platform.swt/commit/36a2cde49563bc13e65b5b03e811641de522f240#diff-bb4584995e162b851fafacf3b046cc35)

で `FindWindow`メソッド(や`CP_INSTALLED`定数)が削除されたようです。  
[サンプルコード](https://github.com/yukihane/stackoverflow-
qa/tree/master/jaso68951)を作って試してみたところ、この修正はSWTバージョン`3.107.0`以降に適用されているようです。

上記のサンプルコードのように、SWT`3.106.3`以前のバージョンを利用すれば動作するかと思います。  
(Windows10;64bit/AdoptOpenJDK11 上でも上記のサンプルコードは動作しました。)

Eclipseに組み込まれたSWTを利用したい場合は、[リリース日付](https://search.maven.org/artifact/org.eclipse.platform/org.eclipse.swt.win32.win32.x86_64)やbug
trackerの情報から察すると、[Eclipse4.7(Oxygen)](https://ja.wikipedia.org/wiki/Eclipse_\(%E7%B5%B1%E5%90%88%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83\)#%E6%AD%B4%E5%8F%B2)かそれより前のバージョンであれば該当メソッドが存在するかと思います。  
Java9がリリースされる前のもののはずなので、Java8で動作させるのが無難かもしれません。


CC BY-SA 4.0
2020-07-25T14:08:31.007
68957
2020-07-25T14:34:45.550
2020-07-25T14:34:45.550
2808
2808
68951
answer