如何在 websphere liberty profile 中使用共享库
How to use shared library in websphere liberty profile
看似简单但是...
我才刚刚开始学习自由概况。
我无法使用共享库。
所以在 server.xml 我放(并重启服务器),例如:
<library>
<folder dir="C:/libs/gson/"></folder>
<!-- or even <file name="C:/libs/gson/gson-2.3.1.jar" /> -->
</library>
无论如何在运行时我收到:"java.lang.NoClassDefFoundError: com/google/gson/Gson"
在 servlet 上我只有导入和简单的使用:
...
import com.google.gson.Gson;
...
@WebServlet("/")
public class HelloWorld extends HttpServlet {
...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Serialization
Gson gson = new Gson();
...
我错过了什么?
将库元素添加到服务器配置不会自动使其可供应用程序使用。您需要配置应用程序才能访问该库,例如,
<application location="myapp.war">
<classloader commonLibraryRef="gsonLib"/>
</application>
<library id="gsonLib">
<file name="C:/libs/gson/gson-2.3.1.jar" />
</library>
您缺少的部分是应用程序需要配置为引用库。有几种方法可以做到这一点:
- 按照此处所述使用全局共享库:https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_classloader_global_libs.html
然后,只需将您的图书馆 ID 更改为 global
,如下所示:
<library id="global">
- 为您的图书馆提供一个 ID 并添加一个
<classloader commonLibraryRef="..."/>
,如 @njr 的回答 中所述
看似简单但是...
我才刚刚开始学习自由概况。
我无法使用共享库。
所以在 server.xml 我放(并重启服务器),例如:
<library>
<folder dir="C:/libs/gson/"></folder>
<!-- or even <file name="C:/libs/gson/gson-2.3.1.jar" /> -->
</library>
无论如何在运行时我收到:"java.lang.NoClassDefFoundError: com/google/gson/Gson"
在 servlet 上我只有导入和简单的使用:
...
import com.google.gson.Gson;
...
@WebServlet("/")
public class HelloWorld extends HttpServlet {
...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Serialization
Gson gson = new Gson();
...
我错过了什么?
将库元素添加到服务器配置不会自动使其可供应用程序使用。您需要配置应用程序才能访问该库,例如,
<application location="myapp.war">
<classloader commonLibraryRef="gsonLib"/>
</application>
<library id="gsonLib">
<file name="C:/libs/gson/gson-2.3.1.jar" />
</library>
您缺少的部分是应用程序需要配置为引用库。有几种方法可以做到这一点:
- 按照此处所述使用全局共享库:https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_classloader_global_libs.html
然后,只需将您的图书馆 ID 更改为 global
,如下所示:
<library id="global">
- 为您的图书馆提供一个 ID 并添加一个
<classloader commonLibraryRef="..."/>
,如 @njr 的回答 中所述