Java是否有类似VirtualEnv的工具?

55 投票
8 回答
33180 浏览
提问于 2025-04-17 01:24

有没有类似于Python中virtualenv的东西,适用于Java或其他JVM语言?

8 个回答

5

是的(可以查看 http://www.jenv.be/),就像很多其他编程语言一样,比如 Ruby、Python、Go、R、Php 等等。

7

像Ant、Maven和Gradle这样的构建工具,跟Python里的pipeasy_install最相似。

在Java中,类似于虚拟环境(virtualenv)的概念是通过类路径(classpath)来实现的。所以其实在Java里并不真的需要虚拟环境。

49

根据我的理解,virtualenv可以让你有独立的库安装路径,实际上就是让你拥有多个“虚拟”的Python安装环境。

Java没有“系统范围安装”的库这个概念:它总是会在类路径中查找要加载的库。因为类路径可以(而且需要!)为每个应用程序单独定义,所以每个应用程序可以选择自己想要加载的库和版本。

如果你深入一点,假设有一个应用程序需要同时使用同一个库的两个不同版本,你也可以通过一些类路径的小技巧来实现。虽然这可能会变得复杂,但确实是可行的(OSGi就是一个支持这种情况的例子,甚至Tomcat在有两个独立的Web应用时也会这样做)。

我在virtualenv的描述中看到了一些关于安全性的提及:Java内置了一个相当全面的安全系统。在服务器应用中,这个安全系统通常会被关闭,因为这样配置起来更简单,但你可以很容易地设置Java应用程序被允许做什么。

(*) 几乎是这样,确实有一些扩展或扩展库,但它们使用得不多,甚至那些也可以很容易地从任意目录加载。

撰写回答