我有以下情况。我正在使用一个服务器,它有一个包含所有JAR的lib
文件夹,但是当服务器有多个应用程序时,事情会变得复杂,因为lib
目录有点疯狂。
我想要做的是将我的所有应用程序的JAR放在不同的位置,并指示类加载器在加载应用程序时加载它们。我怎样才能做到这一点?我将如何重写我的应用程序以促进这一点?
答案 0 :(得分:4)
据我所知,除非您编写了自己的类加载器,否则无法在运行时加载jar文件或设置CLASSPATH。 Tomcat是一个很好的例子,其中tomcat的类加载器以多级动态加载jar文件。
http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html
有一个通用的类加载器,允许在所有Web应用程序中共享jar文件。但是,如果要添加仅为Web应用程序加载的jar文件,则应将其添加到webroot下,例如WEB-INF / lib目录下。此文件夹中的库不会共享给所有应用程序。例如,这意味着如果两个Web应用程序正在使用同一个库的不同版本,则它们不会混淆。
由于我正在使用maven来管理项目,所以我不需要担心在哪里放置我的ja依赖项。 Maven会自动将库捆绑到war文件中。
因此,如果您没有使用servlet容器,例如tomcat,jetty等,那么你将需要编写一个类加载器。如果有必要,那么看看tomcat但是这可能并不容易。
答案 1 :(得分:2)
您可以在Java 6中将目录添加到类路径中。