Scavenger
Scavenger

Reputation: 11

Sharding-jdbc: preciseAlgorithmClassName: java -jar project.jar error:Caused by: java.lang.ClassNotFoundException

https://github.com/apache/shardingsphere/issues/5657 dependency:

<dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-core-common</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>

part of yml config:

precise-algorithm-class-name: package-name.my-class-name
range-algorithm-class-name: package-name.my-class-name

When I run java -jar project.jar..... error info:

Caused by: java.lang.ClassNotFoundException: package-name.my-class-name
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) ~[na:na]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) ~[na:na]
    at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
    at java.base/java.lang.Class.forName(Class.java:291) ~[na:na]
    at org.apache.shardingsphere.core.strategy.route.ShardingAlgorithmFactory.newInstance(ShardingAlgorithmFactory.java:45) ~[sharding-core-common-4.0.0-RC1.jar:4.0.0-RC1]
    at org.apache.shardingsphere.core.yaml.swapper.impl.ShardingStrategyConfigurationYamlSwapper.swap(ShardingStrategyConfigurationYamlSwapper.java:75) ~[sharding-core-common-4.0.0-RC1.jar:4.0.0-RC1]
    at org.apache.shardingsphere.core.yaml.swapper.impl.TableRuleConfigurationYamlSwapper.swap(TableRuleConfigurationYamlSwapper.java:63) ~[sharding-core-common-4.0.0-RC1.jar:4.0.0-RC1]
    at org.apache.shardingsphere.core.yaml.swapper.impl.ShardingRuleConfigurationYamlSwapper.swap(ShardingRuleConfigurationYamlSwapper.java:82) ~[sharding-core-common-4.0.0-RC1.jar:4.0.0-RC1]
    at org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration.dataSource(SpringBootConfiguration.java:95) ~[sharding-jdbc-spring-boot-starter-4.0.0-RC1.jar:4.0.0-RC1]
    at org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration$$EnhancerBySpringCGLIB$$645084fc.CGLIB$dataSource$0(<generated>) ~[sharding-jdbc-spring-boot-starter-4.0.0-RC1.jar:4.0.0-RC1]
    at org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration$$EnhancerBySpringCGLIB$$645084fc$$FastClassBySpringCGLIB$$a4b3c757.invoke(<generated>) ~[sharding-jdbc-spring-boot-starter-4.0.0-RC1.jar:4.0.0-RC1]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.8.RELEASE.jar:5.1.8.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
    at org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration$$EnhancerBySpringCGLIB$$645084fc.dataSource(<generated>) ~[sharding-jdbc-spring-boot-starter-4.0.0-RC1.jar:4.0.0-RC1]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
    ... 155 common frames omitted

I run the project in IDEA successfully

It is a Spring Boot project and I separate the dependent jar package from the application jar package.

The precise-algorithm-class is in correct classpath.

The reason for this problem is that the dependent jar package is separated from the application jar package.

Is it a bug?

Upvotes: 1

Views: 370

Answers (1)

Liang Zhang
Liang Zhang

Reputation: 76

It is not a bug from the open source project. The exception is Caused by: java.lang.ClassNotFoundException: package-name.my-class-name

The problem came from package-name.my-class-name which is your example code

Upvotes: 0

Related Questions