对于在我的本地计算机上运行应用程序,我开始真正喜欢的一个选项是使用Docker。你可以简单地在官方的JDK容器中运行你的应用程序——这意味着你不必担心在本地机器上设置一切(或者为不同的应用程序运行多个不同版本的JDK等)。
虽然这可能不会帮助您解决当前的安装问题,但这是一种解决方案,意味着您可以避开与试图在开发机器上正确运行Java相关的问题的雷区!
好处是:
不需要在您的本地机器上设置任何版本的Java(您只需要在从Docker Hub中取出的容器中运行Java即可)
只需更改容器上的标记,就可以轻松切换到不同版本的Java。
项目依赖项安装在容器中——所以如果你搞砸了你的配置,你可以简单地破坏容器并重新开始。
一个非常简单的例子:
创建Dockerfile:
FROM java:8
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
这里我们指定运行SDK版本8的Java容器(Java:8 -要使用Java 7,您只需指定:Java:7)
我们将本地目录映射到容器内的目录:/usr/src/myapp
创建一个docker-compose。yml文件:
version: "2"
services:
java:
build: .
volumes:
- .:/usr/src/myapp
现在,假设我们有这个Java文件:
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
所以我们有如下的文件结构:
.
|_ Dockerfile
|_ docker-compose.yml
|_ HelloWorld.java
你可以做各种Java的事情,比如:
编译:
docker-compose run --rm java javac HelloWorld.java
您应该注意到,HelloWorld.class显示在您的当前目录中(这是因为我们已经将当前目录映射到代码所在的容器内的位置
run:
docker-compose run --rm java java HelloWorld
注意:第一次运行时,它将获取图像等。这需要一段时间,因为这只是第一次发生
Docker-compose run——从容器内部运行命令
-rm告诉docker在命令运行完成后删除容器
Java是服务/容器的名称(来自我们的docker-compose文件),该命令将对其运行
这一行的其余部分是在容器中运行的命令。
这是一种非常酷的方式,可以为不同的应用程序运行不同版本的Java,而不会使您的本地设置完全混乱:)。
下面是一个稍微复杂一点的例子,它有Maven和一个简单的Spring应用程序
免责声明:
我还没有在IntelliJ这样的IDE中真正尝试过这一点——所以不完全确定这方面的事情将如何工作。虽然看起来docker支持即将到来
下面是一个使用Spring Boot、Zuul和Docker运行微服务的复杂示例