Skip to content

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

Closed
@ghost

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions