如何将 usrsharejava库添加到webapp的类path中?

如何将 usrsharejava库添加到webapp的类path中?,第1张

概述如何将/ usr / share / java库添加到webapp的类path中?

概要

部署在linux + tomcat5.5上的webapp可以自动使用/看到所有的/usr/share/java/ jars吗?

细节

我正在打包我的Java的Web应用程序的Ubuntu(但问题是与任何基于linux的发行版),并将使其依赖于tomcat。

我将把上下文描述符(一个xml文件)放到/usr/share/tomcat5.5/conf/Catalina/localhost/ ,以便部署我的应用程序。 让我的网页目录在这里: /usr/share/<appname>/web ,我怎样才能让我的应用程序使用系统中安装的java jar库( /usr/share/java )?

我不能只是symlink /usr/share/java -> <webdir>/WEB-INF/lib ,因为我有我的自定义jar需要放在lib目录下。

使用java时,在窗口上使用'〜'获取短path

试图find泄漏! anon对于pmap意味着什么?

创build几个HsqlDB服务器数据库最简单的方法是什么?

为什么从Process'inputStream读取块数据是可用的

将path+参数添加到响应字段

坏的解决scheme

我目前find的解决scheme是将每个需要的jar符号链接到<webdir>/WEB-INF/lib/ 。

这不是很好,因为我必须符号链接很多jar,甚至更糟糕的是符号链接我的直接依赖库(jar)所需的所有jar(依此类推)。 如果我的直接依赖关系库更改所需的jar子列表,我将不得不保持符号链接。

为什么Glassfish在linux中似乎需要比在windows中更多的内存?

是否有可能从Java程序中捕获windowspopup消息框?

无法声明界面:资源繁忙

在命令提示符下的`java`命令中设置默认的类path

file.Listfiles()并将物理文件夹与虚拟文件夹区分开来

你不应该这样做。 Java EE应用程序应该是自给自足的,不依赖于除了容器提供的部署包以外的任何资源。 所以你应该从目录中拿出你需要的库,并将其添加到你的战争或耳朵包。

这可以确保您的应用程序在您部署它的任何位置都将保持一致,并且不会受到/ usr / share / java中lib版本的意外更改…

根据Tomcat类加载文档 ,您需要将任何应该可用的共享库放到$ CATAliNA_BASE / shared / lib库中的所有Tomcat应用程序中 – 所以您要做的一种方法是将库从/ usr / share / java到$ CATAliNA_BASE / shared / lib。

如果我不误解同一文档,Tomcat也会在启动时使系统范围的CLAsspATH变量的内容可用于类加载器,所以如果您的目录 – / usr / share / java包含在系统范围的CLAsspATH中变量,那么也应该工作。 虽然我从来没有这样做过, Tomcat使$ CATAliNA_BASE / shared / lib的内容可用于Tomcat的方法一直是完美的。

entzik的答案引导我到以下解决方案。

我将使用修改过的“不好的解决方案”(请参阅​​问题)。

修改如下:

取决于所有依赖项的特定包版本(在打包时影响“控制”文件)


例如: libcommons-io-java(= 1.3.1)而不是libcommons-io-java

符号链接到`/ usr / share / java`中的实际jar文件,而不是“广义的”


例:


webdir / WEB-INF / lib / commons-io.jar – > /usr/share/java/commons-io-1.3.1.jar


并不是


webdir / WEB-INF / lib / commons-io.jar – > /usr/share/java/commons-io.jar

如果管理员安装了新版本的库(例如commons-io),此修改可确保webapp不会中断。

缺点是这种方法显然会使用一个应用程序版本的库而使系统膨胀,并可能导致一些其他应用程序/库由于版本冲突而无法安装的问题。 如果我们谈论图书馆,我想这两个潜在的问题都是微不足道的。

您有两个选择,一个是让类加载器将库提供给所有Java程序,另一个是让类加载器将库提供给所有的tomcat上下文。

将你的符号链接添加到/usr/lib/jvm/java-1.5.0-sun-1.5.0.11/jre/lib(注意你可能需要在这个路径中指定一个不同的版本),以允许所有的java程序访问这些库或将它们添加到Tomcat共享库中的var / lib / tomcat5.5 / shared / libs(同样,版本号可能不同)以供所有Tomcat上下文访问。

我也应该注意到这些目录位置是从Ubuntu“Feisty”中获取的。

总结

以上是内存溢出为你收集整理的如何将/ usr / share / java库添加到webapp的类path中?全部内容,希望文章能够帮你解决如何将/ usr / share / java库添加到webapp的类path中?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1154928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存