如果我有一个类组织。foobar.MyClass和想要把它放在罐子里的文件,我必须把它放在罐子的/org/foobar/目录,或可以我把它放在/bin/org/foobar/并以某种方式指定/bin/作类路径内的罐子本身?

有帮助吗?

解决方案

通常的方式,每个人都这样做--迄今为止我还没见过一个罐子里做不同的东西--是把类组织。foobar.MyClass在罐子文件在罐子的/org/foobar/目录。我不能想象一个很好的理由做一些不同的东西,因为这会妨碍正常使用这个罐子的任何人都不做不同寻常的事情。

其他提示

你可以包括类径酒店在你的清单,清单的罐子文件的应用取决。道路将被认为是相对的位置的可执行的罐子。

例如,如果你的app.jar 包含这个清单。MF:

类的路径:lib1.jar,lib/lib2.jar

然后JVM会希望找到lib1.jar 在同一dir作app.jar 和一个子目录中称为lib含有lib2.jar.

我相信你可以做到这一点通过使用清单的文件。如果我没有记错的话,您可以指定位置的特定文件内的罐子。

该名称在罐子文件具有相匹配的类名称。当然,除非你写一个自定义类的加载程序对做奇怪的东西。

你可以指定一个"目录"内的罐子文件使用一个罐子的网址。然而,我不认为 URLClassLoader 处理此正确地(不尝试).

一种功能的确存在作为标准是为了增加其他的瓶子上的文件的类路径通过指定他们在清单中。

你为什么要这样做后者?很容易只是把它放在正确的目录基础上的包名称,避免编辑的文件清单或做任何其他种类的特别设置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top