【问题标题】:is there an easier way to load mysql driver to class path?有没有更简单的方法将 mysql 驱动程序加载到类路径?
【发布时间】:2020-06-05 08:33:53
【问题描述】:

我正在尝试命令行类路径方法,但 docker run 不断给出类未找到错误?有没有更简单的方法将 mysql 驱动程序加载到类路径?

错误:

Error:Error: Could not find or load main class com.smartworks.client.RDSConnectionTest
Caused by: java.lang.ClassNotFoundException:

我的 Dockerfile:

FROM openjdk

COPY src src

WORKDIR src

RUN mkdir -p target

COPY target/mysql-connector-java-8.0.20.jar /target/

RUN javac ./com/smartworks/client/*.java

ENTRYPOINT ["java","-cp", "mysql-connector-java-8.0.20.jar:target/*","com.smartworks.client.RDSConnectionTest"]

【问题讨论】:

    标签: java mysql docker driver classpath


    【解决方案1】:
    FROM openjdk
    COPY src . 
    COPY target/mysql-connector-java-8.0.20.jar libs/
    ENV CLASSPATH=libs/mysql-connector-java-8.0.20.jar:${CLASSPATH}
    RUN javac /*.java
    ENTRYPOINT ["java","RDSConnectionTest"]
    

    【讨论】:

      【解决方案2】:

      我看到,你的Dockerfile有问题,请看下面的Dockerfile并根据它进行更改。

      FROM openjdk
      
      WORKDIR src # Good to define WORKDIR before any operation
      
      COPY src . # As you are only copying src and change dest to Current directory which is src by default as WORKDIR is mentioned above
      
      RUN mkdir -p target
      
      RUN ls -lart #Add a debug to see if everyfile is present
      COPY target/mysql-connector-java-8.0.20.jar target/ # Instead of /target , you have to copy to target
      
      RUN javac ./com/smartworks/client/*.java 
      
      #For Classpath
      ENV CLASSPATH=libs/mysql-connector-java-8.0.20.jar:${CLASSPATH}
      
      ENTRYPOINT ["java", "RDSConnectionTest"]
      
      

      【讨论】:

      • 嗨 Nischay,还是同样的问题。下面提供的输出。 $ docker run -t rdstest 错误:无法找到或加载主类 com.smartworks.client.RDSConnectionTest 原因:java.lang.ClassNotFoundException:com.smartworks.client.RDSConnectionTest
      • 你能把docker builddocker run的输出加起来吗?以及您正在运行的确切命令。
      • 问题已解决。我必须通过命令 ENV CLASSPATH 将驱动程序附加到类路径中。
      • 太好了。您能否发布您所做的 Dockerfile 更改,以便我们每个人都知道答案
      • 非常通用的版本。应该适用于来自 docker 的简单 rds 连接测试。 ```来自 openjdk:8 复制源代码。复制目标/mysql-connector-java-8.0.20.jar libs/ENV CLASSPATH=libs/mysql-connector-java-8.0.20.jar:${CLASSPATH} RUN javac /*.java RUN ls -lart ENTRYPOINT [" java","RDSConnectionTest"]
      猜你喜欢
      • 2014-03-30
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      相关资源
      最近更新 更多