Java6
-
ある実行環境が Java6でそれ以上上げられないため (Windows versionのせいか) IntelliJで jarを作っても Java6で動かすことが求められる
-
Java の場合、Project Language Levelで 6に抑えればよい
-
Kotlin の場合、Project Language Levelで 6に抑え、なおかつ Kotlin Compiler Target JVM Version を1.6にしておく gui用にjavaコードが入っていた場合そちらのbytecode versionも6にしておく
-
さて生成された jar のテスト環境だが、これがまた難しい
- 開発用のJDK8ではテストできないので Java6環境がほしい
-
M1 Macに無理矢理 JDK6を入れる
- https://softantenna.com/wp/tips/macos-catalina-apple-java-6/
- patchをあてれば無理矢理いれることはできるが、一方実行時に swing パーツが表示されなかったり
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Non-Java exception raised, not handled! (Original problem: Deprecated in 10_12... DO NOT EVER USE CGSEventRecord directly. Bad things, man.... bad things.)
- というような呪われたエラーメッセージが出てしまう
- やむなく
cd /Library/Java/JavaVirtualMachines; rm -rf 1.6.0.jdk
と削除
-
M1 Macで UTMを走らせ、その上で Windows x86 を走らせてみたが、
- Windows 2000はCD-ROMブートするものの2段階目で延々ループ状態
- Windows XP はCD-ROMが立ち上がらない状態
-
M1 Macにdocker経由で linuxを走らせ JDK6を走らせる
- M1のdocker は x86イメージも作動可能なのです
- たとえば ubuntu linux+jdk6をダウンロード
docker pull enoniccloud/java6
- CLIログインし
java -version
java version "1.6.0_45"
- aptソースを日本にする
sed -i.org -e 's|archive.ubuntu.com|ubuntutym.u-toyama.ac.jp|g' /etc/apt/sources.list
apt-get update
apt-get install tcsh zip unzip file xterm
export DISPLAY=xxx.xxx.xxx.xxx:0
としておきかつ.Xauthorityをコピーしてくれば、java swingもホスト側の XQuartzに表示されます あるいはdocker run -d -it --name jdk6linux -e DISPLAY=$DISPLAY --net host -v $HOME/.Xauthority:/root/.Xauthority:rw -v 他のマウント enoniccloud/java6
- M1 Macで軽くできるのがいいが、Windows実機環境と違いフォントが文字化けしたりする