小编Dha*_*oot的帖子

我正在尝试从 Dockerfile 执行 mvn install,但它不起作用,说找不到 mvn

我正在尝试执行“mvn install”以从 Dockerfile 创建 war 文件。波纹管是 Dockerfile

FROM scratch
FROM ubuntu:16.04

RUN mkdir /opt/java8
RUN mkdir /opt/tomcat8
RUN mkdir /opt/maven3

ENV JAVA_HOME /opt/java8
ENV CATALINA_HOME /opt/tomcat8

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$M2_HOME/bin

ADD jdk1.8.0_112 /opt/java8
ADD apache-tomcat-8.0.38 /opt/tomcat8

WORKDIR /home/veni/git/M_UserTP
RUN mvn install

WORKDIR /home/veni/git/M_UserTP/target 
RUN mv M_UserTP.war 
/home/veni/Documents/dhaval_bhoot/docker_images/tomcat1

ADD M_UserTP.war /opt/tomcat8/webapps

EXPOSE 8080

CMD ["catalina.sh", "run"]
Run Code Online (Sandbox Code Playgroud)

我还在PATH环境变量中添加了maven的bin目录路径。

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/veni/Documents /apache-maven-3.3.9/bin/

这个路径是我从机器中的 root 用户设置的,我还在 PATH 变量中添加了与普通用户相同的路径。

所以现在我退出 root 用户并通过 sudo su 返回 root 用户并检查 PATH 变量,它没有 maven 的路径

因此,当我对图像进行 docker 构建时,出现以下错误

/bin/sh: 1: mvn: …

build maven docker

5
推荐指数
1
解决办法
2万
查看次数

方法重载它如何决定在以下情况下调用哪个版本的重载方法

在java中,我有2个重载方法,一个是main方法,所以从main方法调用重载方法。

public class Test {
public static void main(String[] args) throws IOException {
    doSomething(null);
}
private static void doSomething(Object o) {
    System.out.println("method with Object in signature is called.");
}
private static void doSomething(String s) {
    System.out.println("method with String in the signature is called.");
}
}
Run Code Online (Sandbox Code Playgroud)

在这里,当我运行此 java 代码时,它将调用 doSomething(String s) 方法并打印

调用签名中带有 String 的方法。

我认为它会调用 doSomething(Object o) 方法,但它不会发生。

那么任何人都可以更详细地向我解释这一点,为什么会发生这种情况以及如何发生?

谢谢你。

java overloading

0
推荐指数
1
解决办法
106
查看次数

标签 统计

build ×1

docker ×1

java ×1

maven ×1

overloading ×1