Skip to content

Run java-tron on ARM - AWS Arm-based Graviton2 instances / Apple M1 #4132

Description

1. What did you do?

We are trying to run FullNode.jar on x2gd.large ARM based instance with Amazon Corretto installed, but get the error:

# Install Amazon Corretto 8
amazon-linux-extras install corretto8

# Install Java Tron
mkdir java-tron
cd java-tron
curl -L https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.4.1/FullNode.jar -o FullNode-4.4.1.jar
curl https://raw.githubusercontent.com/tronprotocol/tron-deployment/master/main_net_config.conf -o main_net_config.conf

# Run java-tron
java -Xmx25g -XX:+UseConcMarkSweepGC -jar FullNode-4.4.1.jar -d data -c main_net_config.conf

And get the error

Exception in thread "main" java.lang.IllegalStateException: Cannot load configuration class: org.tron.core.config.DefaultConfig
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:410)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:263)
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:284)
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:130)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:520)
	at org.tron.program.FullNode.main(FullNode.java:76)
Caused by: java.lang.UnsatisfiedLinkError: /tmp/librocksdbjni766752390673739481.so: /tmp/librocksdbjni766752390673739481.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64-bit .so on a AARCH64-bit platform)
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1817)
	at java.lang.Runtime.load0(Runtime.java:810)
	at java.lang.System.load(System.java:1088)
	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:78)
	at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:56)
	at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:64)
	at org.rocksdb.RocksDB.<clinit>(RocksDB.java:35)
	at org.tron.core.config.DefaultConfig.<clinit>(DefaultConfig.java:30)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:397)
	at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:237)
	at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:378)
	at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:318)
	at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:135)
	at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:107)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:400)
	... 6 more

2. What did you expect to see?

We should be able to run java-tron on ARM based architecture.

3. What did you see instead?

For now we are running java-tron on x86-64 architecture.

During last years Amazon WS introduced a lot of ARM based instances and they have a great performance and affordable price. Also, Apple started a movement to the ARM architecture which is actual for Developers. It will be great to have an option to run java-tron using ARM architecture.

Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions