我从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中? 感谢。
答案 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