在 netbeans 中添加外部 jar 以在 glassfish 中提供休息服务
Adding external jars in netbeans for rest service in glassfish
我正在尝试在 Netbeans 8.1
中使用 Web App
项目类型创建一个简单的 REST
服务,JDK 1.8
并将部署在 Glassfish Server 4.1.1
.
我需要使用外部库来提供服务功能,即 tika 和 lucene。
我的问题是,如果我在我的 Nb 项目的库中添加任何 jar(右键单击 -> 添加 jar/folder: tika-app-1.12.jar),我会得到:
- 部署时出错:
Grave: Class [ javax/cache/configuration/Configuration ] not found.
Error while loading [ class
org.apache.cxf.jaxrs.client.cache.CacheControlFeature ]
- 调用时出错:
Advertencia: StandardWrapperValve[BusquedaApplication]:
Servlet.service() for servlet BusquedaApplication threw exception
java.lang.NullPointerException at
org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInInterceptor.filter(JAXRSBeanValidationInInterceptor.java:64)
at
org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:132)
...
我已经尝试在 glassfish/lib
、glassfish/domains/<mydomain>/lib
和 glassfish/domains/<mydomain>/lib/ext
中添加 jar 文件,但错误仍然存在。
请注意,只要我将 jar 添加到 Nb 库文件夹中,就会出现这些错误,无论我是否在我的代码中引用它们。
如果我删除 jar,服务将无误地部署,我也可以正确调用它并获得适当的响应。
非常感谢任何有关处理这些外部库的正确方法的见解。
好的,我想我明白了。
能够使用外部库:
不要将它们打包到 war
文件中。在 Nb 中:转到 Project Properties -> Libraries -> Compile-time libraries
。然后取消选中所有列出的库的包框。
将所有 .jar
库复制到 <domains-folder>/<your-domain-name>/lib
。请注意,您的域文件夹可能不在 Glassfish 的安装目录中。您可以检查 Nb 中的服务器属性(转到 Services tab -> right-click Glassfish server -> Properties -> Common -> Domains Folder
)
- 在 Servlet 中使用委托反转模型。为此,请在
glassfish-web.xml
文件的 class-loader
元素中设置 delegate="false"
。
这对我有用。我希望我能帮助其他处于类似情况的人。
我正在尝试在 Netbeans 8.1
中使用 Web App
项目类型创建一个简单的 REST
服务,JDK 1.8
并将部署在 Glassfish Server 4.1.1
.
我需要使用外部库来提供服务功能,即 tika 和 lucene。
我的问题是,如果我在我的 Nb 项目的库中添加任何 jar(右键单击 -> 添加 jar/folder: tika-app-1.12.jar),我会得到:
- 部署时出错:
Grave: Class [ javax/cache/configuration/Configuration ] not found. Error while loading [ class org.apache.cxf.jaxrs.client.cache.CacheControlFeature ]
- 调用时出错:
Advertencia: StandardWrapperValve[BusquedaApplication]: Servlet.service() for servlet BusquedaApplication threw exception java.lang.NullPointerException at org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInInterceptor.filter(JAXRSBeanValidationInInterceptor.java:64) at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:132) ...
我已经尝试在 glassfish/lib
、glassfish/domains/<mydomain>/lib
和 glassfish/domains/<mydomain>/lib/ext
中添加 jar 文件,但错误仍然存在。
请注意,只要我将 jar 添加到 Nb 库文件夹中,就会出现这些错误,无论我是否在我的代码中引用它们。
如果我删除 jar,服务将无误地部署,我也可以正确调用它并获得适当的响应。
非常感谢任何有关处理这些外部库的正确方法的见解。
好的,我想我明白了。
能够使用外部库:
不要将它们打包到
war
文件中。在 Nb 中:转到Project Properties -> Libraries -> Compile-time libraries
。然后取消选中所有列出的库的包框。将所有
.jar
库复制到<domains-folder>/<your-domain-name>/lib
。请注意,您的域文件夹可能不在 Glassfish 的安装目录中。您可以检查 Nb 中的服务器属性(转到Services tab -> right-click Glassfish server -> Properties -> Common -> Domains Folder
)- 在 Servlet 中使用委托反转模型。为此,请在
glassfish-web.xml
文件的class-loader
元素中设置delegate="false"
。
这对我有用。我希望我能帮助其他处于类似情况的人。