在Glassfish中放置外部库的位置

时间:2011-07-31 12:43:27

标签: java-ee netbeans glassfish external

我使用Netbeans 7创建了一个JSF2项目,并成功将其部署在Glassfish 3.1上。 虽然耳朵文件已经变得非常大(6.5mb),但大多数都是由外部jar文件(如apache commons,solrj,primefaces和pdfrenderer等)组成,它们被复制到相应的war / ejb文件中。

我的问题是:如何避免这种情况并使我的耳朵文件变小 - 它应该只包含我创建的内容,外部lib只应在服务器上部署一次。

我在网上搜索了这方面的答案,我发现的唯一一件事就是将外部jar文件放在glassfish安装目录下的“domains / domain1 / lib”或“domains / domain1 / lib / ext”下并取消选中'在Netbeans项目库设置中打包'标志,但到目前为止这些都没有工作(我总是得到ClassNotFoundExceptions)。

我是否必须做其他事情,在某处调整类路径设置或如何实现此目的?有没有人有解决方案?

更新:好的我发现这只发生在Netbeans附带的本地Glassfish安装上(它是一台运行64位Windows 7的笔记本电脑)。在我的远程Linux机器上它按预期工作,即我能够将所有外部库放入'domains / domain1 / lib' - 我的耳朵文件现在只有~70万:) 我也会在我的Mac和另一个Windows 7机器上尝试这个,看看这是否是与OS相关的问题。

2 个答案:

答案 0 :(得分:2)

我想我现在可以自己回答这个问题:domain1 / lib似乎是放置所有jar文件的正确位置。至少它在我试过的和我的Mac上的2个Linux机箱上完美运行。我还发现了为什么它在我的Windows 7笔记本电脑上的工作方式不同。 如果您使用Netbeans附带的Glassfish安装,则域路径是用户特定的,这意味着您必须将jar文件放在

  

<强> C:\用户\`username` \的.netbeans \ 7.0 \配置\ GF3 \ domain1的\ lib中

按预期工作,

下的罐子
  

C:\ Program Files \ glassfish-3.1 \ glassfish \ domain \ domain1 \ lib

另一方面,

似乎被类加载器忽略

答案 1 :(得分:-1)

属于类路径的唯一目录是domain1\lib\classes目录。把你的罐放在那里会将它们添加到类路径中。

您也可以将您的耳朵文件放在lib目录(以前的APP-INF \ lib)下。这是放置共享罐子的地方。