首页 > 解决方案 > Netbeans 不从 Tomcat 的 %CATALINA_BASE%/lib 文件夹加载库

问题描述

我有一个运行良好的 Tomcat 9 服务器,它被拆分到 CATALINA_HOME(bin,带有 tomcat jar的lib )和 CATALINA_BASE(带有其他 jar、webapps 和其他所有内容的另一个lib文件夹)。CATALINA_HOME 和 CATALINA_BASE 设置为全局系统变量。

我想用 Netbeans IDE 在我的开发 PC (Windows) 上重复这种配置。因此,当我将 Tomcat 添加到 Netbeans 并仅使用 bin 和 lib 文件夹设置 CATALINA_HOME 的位置时,它会询问我 CATALINA_BASE,我也设置了它。

结果,我看到 tomcat 从 CATALINA_HOME\lib 加载它的库,但丢弃了位于 CATALINA_BASE\lib 中的库(Netbeans 中的项目也看不到来自 CATALINA_BASE\lib 的库)。

如果我将 Tomcat 作为服务安装并运行它,它会成功加载这两个文件夹中的所有库。

我想也许我可以在 Netbeans 服务器配置文件中找到一些参数:C:\Users\\AppData\Roaming\NetBeans\10.0\config\J2EE\InstalledServers\.nbattrs

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE attributes PUBLIC "-//NetBeans//DTD DefaultAttributes 1.0//EN" "http://www.netbeans.org/dtds/attributes-1_0.dtd">
<attributes version="1.0">
    <fileobject name="instance">
        <attr name="admin_port" stringvalue="8005"/>
        <attr name="debug_type" stringvalue="SEL_debuggingType_shared"/>
        <attr name="displayName" stringvalue="Apache Tomcat 9.0.17"/>
        <attr name="httpportnumber" stringvalue="80"/>
        <attr name="instance_id" stringvalue="tomcat90"/>
        <attr name="java_opts" stringvalue="-Xms512m -Xmx512m -verbose:gc -Dfile.encoding=UTF-8"/>
        <attr name="java_platform" stringvalue="jdk1.8.0_202"/>
        <attr name="monitor_enabled" stringvalue="false"/>
        <attr name="registeredWithoutUI" stringvalue="false"/>
        <attr name="runningCheckTimeout" stringvalue="2000"/>
        <attr name="timestamp" stringvalue="1553528984776"/>
        <attr name="url" stringvalue="tomcat90:home=C:\dev\srv\apache-tomcat-9.0.17:base=C:\dev\srv\catalina_base"/>
        <attr name="username" stringvalue="tomcatuser"/>
    </fileobject>
</attributes>

但我没有找到任何选择。

所以问题是:如何配置 Netbeans 以支持 CATALINA_HOME 和 CATALINA_BASE 文件夹中的库?

标签: tomcatnetbeanscatalinatomcat9

解决方案


我在 Tomcat 8 和 8.5 以及基于 NetBeans 8.2 和 12 Ant 的项目中遇到了同样的问题。我做了很多测试和一些研究。我看到了很多与处理 CATALINA_BASE 相关的其他问题报告,但不是这个。

我当前的解决方案是将 CATALINA_HOME 目录更改为可由我自己写入,并将我的库放置到 CATALINA_HOME/lib 中。这不太理想,因为它并不是真正针对部署环境进行开发的,但它似乎是一种必要的解决方法,无需更改 NetBeans 的代码。

通过这个设置,我质疑我在 NetBeans Server Tomcat 配置中使用 Catalina Base。我不确定它提供了什么价值,只是我注意到 8.2 捆绑的 Tomcat 8.0 也包含在带有 httpmonitor 和 schema2beans 库的 CATALINA_BASE/nblib 中。


推荐阅读