Jakarta ee 在Glassfish中放置外部LIB的位置

Jakarta ee 在Glassfish中放置外部LIB的位置,jakarta-ee,netbeans,glassfish,external,Jakarta Ee,Netbeans,Glassfish,External,我已经用Netbeans 7创建了一个JSF2项目,并成功地将其部署在Glassfish 3.1上。 尽管ear文件已经变得相当大(6.5mb),但它大部分由外部jar文件(如apache commons、solrj、primefaces和pdfrenderer等)组成,这些文件被复制到各自的war/ejb文件中 我的问题是:如何避免这种情况并使我的ear文件更小-它应该只包含我创建的内容,外部LIB应该只在服务器上部署一次 我在网上搜索了这个问题的答案,唯一找到的是将外部jar文件放在glas

我已经用Netbeans 7创建了一个JSF2项目,并成功地将其部署在Glassfish 3.1上。 尽管ear文件已经变得相当大(6.5mb),但它大部分由外部jar文件(如apache commons、solrj、primefaces和pdfrenderer等)组成,这些文件被复制到各自的war/ejb文件中

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

我在网上搜索了这个问题的答案,唯一找到的是将外部jar文件放在glassfish安装目录中的'domains/domain1/lib'或'domains/domain1/lib/ext'下,并在Netbeans项目库设置中取消选中'Package'标志,但到目前为止,这些都不起作用(我总是得到ClassNotFoundExceptions)

我是否必须做其他事情,在某个地方调整类路径设置,或者如何实现这一点?有人有解决办法吗

更新:好的,我发现这只发生在我的本地Glassfish安装上,它与Netbeans一起安装(它是一台运行64位Windows7的笔记本电脑)。在我的远程Linux机器上,它按预期工作,也就是说,我能够将所有外部lib放入'domains/domain1/lib'-我的ear文件现在只有~700k:)
我将在我的Mac电脑和另一个Windows 7设备上尝试此操作,看看这是操作系统相关问题还是其他问题。

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


您还可以将ear文件放在
lib
目录下(以前是APP-INF\lib)。这就是放置共享jar的地方。

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

C:\Users\`username`\.netbeans\7.0\config\GF3\domain1\lib

要按预期工作,罐子就在下面

C:\ProgramFiles\glassfish-3.1\glassfish\domain\domain1\lib


另一方面,类加载器似乎忽略了

尽管它们都被称为domain1,但由于位于不同的位置,它们完全不同。第一个可行,因为这是netbeans为您创建的域,并且实际上正在启动。为了参考,这里回答了一个类似的问题: