如何使用两个jar文件构建Dockerfile

时间:2016-05-26 16:34:33

标签: java jar docker classpath dockerfile

我从Docker开始,我有点迷失。

我的java实验有两个jar文件,包含测试数据的zip文件和两个配置文件。 我正试图在Docker上运行这个exp。

如果我想在我的电脑上运行这个exp,有两个阶段。

阶段1:

java -classpath library.jar;alg.jar library.utl.App.class in.cf

最后一个参数是配置,在此之后我将生成文件 alg1.bin

阶段2:

java -classpath library.jar;alg.jar library.utl.App.class ot.cf

我正在使用文件 alg1.bin ,这是主要测试。

我将Dockerfile用于阶段1:

FROM java:7

ADD java-exp /usr/local/

CMD ["java", "-classpath",
"/usr/local/library.jar;/usr/local/alg.jar",
"/usr/local/library.utl.App.class", "/usr/local/in.cf"]

我成功建造但是当我尝试

docker run java-exp

我收到错误:

  

错误:无法找到或加载主类   .usr.local.library.utl.App.class。

任何人都可以帮我解决这个问题吗?

更好的方法是,帮助我将两个阶段合并到一个Dockerfile中? 感谢。

4 个答案:

答案 0 :(得分:1)

尝试

FROM java:7

ADD java-exp /usr/local/

WORKDIR /usr/local/

CMD ["java", "-classpath","library.jar;alg.jar","library.utl.App.class","in.cf"]

答案 1 :(得分:1)

我想我解决了。 主要错误在于CMD

正确的是:

CMD ["java", "-classpath",
"/usr/local/library.jar:/usr/local/alg.jar",
"/usr/local/library.utl.App", "/usr/local/in.cf"]

而不是:

CMD ["java", "-classpath",
"/usr/local/library.jar;/usr/local/alg.jar",
"/usr/local/library.utl.App.class", "/usr/local/in.cf"]

两个小错误:,;和.class

感谢您的帮助。

答案 2 :(得分:0)

You can try the following

CMD ["java", "-cp", "/usr/local/library/*", "/usr/local/library.utl.App.class", "/usr/local/in.cf"]

答案 3 :(得分:0)

如果您使用ENTRYPOINT之类的话会更好:

ENTRYPOINT ["/usr/local/java-exp/entrypoint.sh"]

然后在entrypoint.sh

#!/bin/bash
java -classpath library.jar;alg.jar library.utl.App.class in.cf
java -classpath library.jar;alg.jar library.utl.App.class ot.cf