Temurin-build: arm32はarmv6piでビルドされ、Atomic store(jlong​​)はサポートされていません。

作成日 2018年11月06日  ·  25コメント  ·  ソース: adoptium/temurin-build

こんにちは!

EclipseIDEを実行するためにOpenJDK8をインストールしたUbuntuにEclipseがあります。

asus@asus-X551MA:~$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
asus@asus-X551MA:~$ 

Eclipseでは、コンパイラーとしてLinux 64 OpenJDK-10.0.2 +13を使用しています。 Raspberry Pi B + v1.2でもarm32OpenJDK-10.0.2 +13を使用しています

pi<strong i="10">@raspberrypi</strong>:~ $ java -version
openjdk version "10.0.2-adoptopenjdk" 2018-07-17
OpenJDK Runtime Enviroment (build 10.0.2-adoptopenjdk+13)
OpenJDK Client VM (build 10.0.2-adoptopenjdk+13, mixed mode)
pi<strong i="11">@raspberrypi</strong>: ~ $

以下を使用して、OpenJDK-10.0.2 +13をRaspberryPi B + v1.2にインストールしました。

export JAVA_HOME="path that you found"
export PATH=$JAVA_HOME/bin:$PATH

Javaプログラムを実行すると、EclipseIDEからコンパイルされます。 このエラーが発生しました:

pi<strong i="18">@raspberrypi</strong>:~ $ java -jar JoystickStepperLCD.jar
========================= DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform ===============

[error occurred during error reportin ((null)), id 0xe0000000]
pi<strong i="19">@raspberrypi</strong>:~ $

JoystickStepperLCD.jarは、次の場所にあるJoystickStepperLCD.zipからダウンロードできます。
https://github.com/DanielMartensson/Embedded-Systems/tree/master/JoystickStepperLCD

bug

最も参考になるコメント

こんにちは、
問題のあるものはAssumeMPフラグが有効になっているのではないかと思います。 次のようにJavaを実行してみてください。

java -XX:-AssumeMP -jar JoystickStepperLCD.jar

または、 https: //ci.adoptopenjdk.net/view/ev3dev/job/openjdk11_build_ev3_linux/からJDKビルドを実行してみて
よろしく、
JakubVaněk

全てのコメント25件

@DanielMartenssonああ、これは理にかなっています。 arm32v6がサポートしていない機能をランタイムからコンパイルしました。 Piで同じプログラムをコンパイルして、何が起こるかを確認する必要があると思います。 これは、WORAが壊れているまれなケースです。

@karianna EclipseIDEでProject-> Cleanを使用してプログラムをコンパイルしました。 これは「コンパイルのみ」である必要があることはわかっていますが、このIDEでは「クリーン」である必要があります。 Ubuntuコンピューター(64ビット)でアプリケーションを実行できない理由は、Pi4J(アプリケーションに含まれているライブラリ)が「Pi」以外の他のコンピューター(NanoPi、RaspberryPiなどのコンピューター)では実行できないためです。 、BananaPiなど。

もう1つの問題は、RaspberryPi上のEclipseIDEがRaspberryPiの速度を低下させるため、コンパイルに数時間かかることです。 それが私がUbuntu-> USBスティック-> RaspberryPiでコンパイルする理由です。

Raspberry PiでJavaコードをコンパイルすると、使用しているIDEに関係なく、長い時間がかかります。 OpenJDK 10.0.2 + 13でWORAを修正することはできませんか?

このアプリケーションを実行するには。 WiringPiはRaspberryPiにインストールする必要があります。

sudo apt-get install wiringpi

WiringPiはCライブラリです。 Pi4Jは、JNIを介してWiringPiと通信できるJavaライブラリです。

@DanielMartensson日食なしでコンパイルできますか? たとえば、Ant / Maven et alを使用したコマンドラインで?

@DanielMartensson日食なしでコンパイルできますか? たとえば、Ant / Maven et alを使用したコマンドラインで?

私はそう思う。 ええと、たくさんのjarファイルが含まれていますが、Piのターミナルで「javac」コマンドを実行するときにそれらを含める方法がわかりません。 パッケージをダウンロードしましたか?

コンパイルするときは常にIDEを使用しています。 その量のjarファイルを含めてコンパイルする方法について何か提案はありますか?

@karianna簡単な

EclipseのIIRCには、すべての依存関係をリストした.projectというファイルがあります。 次に、コマンドラインから実行するためのサンプルスクリプトを提供します。 次のようになります。

javac -cp "Path's to all of your JARs" YourClass.java

@karianna

複数のクラスがある場合はどうなりますか? 別のフォルダにも。

javac -cp "すべてのJARへのパス" YourClass.java MySecondClass.java AnotherClass.java .... class.java

@karianna AdoptOpenJDK 10.0.2 + 13で実行できるように、これをコンパイルしてからアップロードできますか?

https://ufile.io/99cdb

実行可能なjarファイルである必要があります。

これをコンパイルするための適切なプラットフォームがありません。 ただし、Piのコマンドラインから実行できます。

find . -name "*.java" > sources.txt
javac -cp Jars/pi4j-core.jar @sources.txt

@karianna

上記の「このプラットフォームではアトミックストア(jlong​​)はサポートされていません」という同じメッセージが原因で、コンパイルすることもできません。
OpenJDK 8を使えば、コンパイルできます。 ADoptOpenJDK 10.0.2フォームARM32では、機能しません。

OK-ARMの専門家を探してみましょう。

あなたはadoptopenjdk.net/slack.htmlに参加して、#armチャンネルにジャンプすることができます

これをPiZero-Wで複製する価値があります

@ sxa555書いてみてください

cat /proc/cpuinfo

そして、あなたが私と同じCPUを持っているかどうかを確認してください:

processor : 0
model_name : ARMv6-compatible processor rev 7 (v6l)
Hardware : BCM2835

ええ、Zero-Wは元のモデルのAIが考えるものとほぼ同じですが、wifiアダプターが追加されているため、3行すべてが投稿したものと同じです。

@karianna @ sxa555 AdoptOpenJDKでARM64ビットシングルボードコンピューターを試した人はいますか? それはうまくいったかどうか?

@karianna @ sxa555 AdoptOpenJDKでARM64ビットシングルボードコンピューターを試した人はいますか? それはうまくいったかどうか?

よくわかりません。おそらく、ARMチャネルでSlackについて質問する価値があります。

こんにちは、
問題のあるものはAssumeMPフラグが有効になっているのではないかと思います。 次のようにJavaを実行してみてください。

java -XX:-AssumeMP -jar JoystickStepperLCD.jar

または、 https: //ci.adoptopenjdk.net/view/ev3dev/job/openjdk11_build_ev3_linux/からJDKビルドを実行してみて
よろしく、
JakubVaněk

@karianna @ sxa555 @JakubVanek

動いた! GPIOピンを制御するためにsudoを使用する必要があります。 OpenJDK 8をインストールしましたが、代わりにJAVA_HOMEをAdoptOpenJDKに変更しました。

pi @ raspberrypi :〜$ export JAVA_HOME = "/ home / pi / Program / jdk-10.0.2 + 13"
pi @ raspberrypi :〜$ export PATH = $ JAVA_HOME / bin:$ PATH
pi @ raspberrypi :〜$ java -version
openjdkバージョン "10.0.2-adoptopenjdk" 2018-07-17
OpenJDKランタイム環境(ビルド10.0.2-adoptopenjdk + 13)
OpenJDKクライアントVM(ビルド10.0.2-adoptopenjdk + 13、混合モード)
pi @ raspberrypi :〜$ ls
デスクトップダウンロードFlaktstyrning.jar写真公開ビデオ
ドキュメントFläktStyrning音楽プログラムテンプレート
pi @ raspberrypi :〜$ java -XX:-AssumeMP -jar Flaktstyrning.jar
OpenJDKクライアントVMの警告:オプションAssumeMPはバージョン10.0で非推奨になり、将来のリリースで削除される可能性があります。
スレッド "main"の例外java.lang.RuntimeException:ピン[28]のGPIO方向インターフェイスを開くことができません:アクセスが拒否されました

com.pi4j.wiringpi.GpioUtil.export(ネイティブメソッド)で
com.pi4j.io.gpio.WiringPiGpioProviderBase.export(WiringPiGpioProviderBase.java:108)で
com.pi4j.io.gpio.impl.GpioPinImpl.export(GpioPinImpl.java:158)で
com.pi4j.io.gpio.impl.GpioControllerImpl.provisionPin(GpioControllerImpl.java:566)で
com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:718)で
com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:730)で
se.spektrakon.hardware.L293.WriteL293で。(WriteL293.java:30)
se.spektrakon.hardware.raspberry.Raspberryで。(Raspberry.java:48)
se.spektrakon.hardware.Main.main(Main.java:11)​​で
pi @ raspberrypi :〜$ sudo java -XX:-AssumeMP -jar Flaktstyrning.jar
オフまたはリセット。 カウント:0 pulse_seconds 0
フォワード。 カウント:1pulse_seconds 36
フォワード。 カウント:2pulse_seconds 36
フォワード。 カウント:3pulse_seconds 36
フォワード。 カウント:4pulse_seconds 36
フォワード。 カウント:5 pulse_seconds 36
フォワード。 カウント:6 pulse_seconds 36
オフまたはリセット。 カウント:0 pulse_seconds 0
オフまたはリセット。 カウント:0 pulse_seconds 0
^ CExited!
オフまたはリセット。 カウント:0 pulse_seconds 0
pi @ raspberrypi :〜$

OpenJDK 8をアンインストールすると、次のコマンドを実行してもjavaが見つかりません。

pi @ raspberrypi :〜$ sudo java -XX:-AssumeMP -jar Flaktstyrning.jar
sudo java:コマンドが見つかりません
pi @ raspberrypi :〜$

sudoコマンドを使用しない場合、上記と同じになります。

pi @ raspberrypi :〜$ java -XX:-AssumeMP -jar Flaktstyrning.jar
OpenJDKクライアントVMの警告:オプションAssumeMPはバージョン10.0で非推奨になり、将来のリリースで削除される可能性があります。
スレッド "main"の例外java.lang.RuntimeException:ピン[28]のGPIO方向インターフェイスを開くことができません:アクセスが拒否されました

com.pi4j.wiringpi.GpioUtil.export(ネイティブメソッド)で
com.pi4j.io.gpio.WiringPiGpioProviderBase.export(WiringPiGpioProviderBase.java:108)で
com.pi4j.io.gpio.impl.GpioPinImpl.export(GpioPinImpl.java:158)で
com.pi4j.io.gpio.impl.GpioControllerImpl.provisionPin(GpioControllerImpl.java:566)で
com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:718)で
com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:730)で
se.spektrakon.hardware.L293.WriteL293で。(WriteL293.java:30)
se.spektrakon.hardware.raspberry.Raspberryで。(Raspberry.java:48)
se.spektrakon.hardware.Main.main(Main.java:11)​​で
pi @ raspberrypi :〜$

とにかく! OpenJDK10.0.2は32ビットARMで動作するようです。 sudoコマンドをバイパスしても、GPIOピンを使用する権限を取得する方法を知っている人はいますか?

こんにちはダニエル、あなたはの出力を表示できますか

cat / proc / cpuinfo

あなたのボードに? -AssumeMPが違いを生んだように見える理由に興味があります。

@JamesKingdon

pi @ raspberrypi :〜$ cat / proc / cpuinfo
プロセッサー:0
モデル名:ARMv6互換プロセッサーrev 7(v6l)
BogoMIPS:697.95
機能:ハーフサムfastmult vfp edsp java tls
CPU実装者:0x41
CPUアーキテクチャ:7
CPUバリアント:0x0
CPU部分:0xb76
CPUリビジョン:7

ハードウェア:BCM2835
改訂:0010
シリアル:00000000b486e11c
pi @ raspberrypi :〜$

ああ、わかりました。 まあそれはそれから合う:)
ああ、ワイヤーを交差させました。どういうわけか、あなたが使用しているのはPi 2だと思ったので、マルチコアを期待していました。

@JamesKingdon

なぜ-XXを使用する必要があるのか​​という問題の解決策を知っていますか:-それを機能させるためにAssumeMPを使用しますか?

オラクルはそれ自体の目的でAdoptOpenJDKを使用しますか? つまり、OpenJDK 8は、ARMをサポートするOracleの最後のバージョンです。

OpenJDK 12eaはその場でマルチプロセッサシステムを検出するので、おそらく最良の解決策です。 それ以外の場合は、コードでAssumeMPを無効にするソースパッチがあります。
https://github.com/ev3dev-lang-java/openjdk-ev3/blob/2f9d939e984d93ad391e5ab8dfdbca4099258b65/scripts/jdk10.patch#L181
AFAIK ARMv6以前は、残りのサポートインフラストラクチャを誰も壊さないことに依存しています。
また、javaをrootとして実行するには、sudo $(which java)..を試してください。

これを解決済みとして閉じる-ドキュメントはARMチャネルで緩んで作業中です

このページは役に立ちましたか?
0 / 5 - 0 評価