【问题标题】:Tomcat can't set 'source' property set in Host Context server.xmlTomcat 无法设置在主机上下文 server.xml 中设置的“源”属性
【发布时间】:2017-01-12 18:37:34
【问题描述】:

我们有一个在 Netbeans 的 Tomcat 下运行的 Web 应用程序,我正在尝试让它在 Eclipse 的 Tomcat 下运行。

我在 Eclipse 中创建了一个服务器,在我的机器上指定了相同的 tomcat 7 安装,用于从 Netbeans 运行。我知道,当一个人这样做时,eclipse 会将 catalina.base 服务器文件复制到它自己的临时目录中以将它们分开。

它显然也对它使用的 server.xml 做了一些更改。在tomcat目录下的server.xml中,Host标签是这样的:

  <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

但是在eclipse环境下,是

  <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
            <Valve className="org.apache.catalina.authenticator.SingleSignOn"/>
    <Context docBase="myApp-war" path="/myApp" reloadable="true" source="org.eclipse.jst.jee.server:myApp-war"/>
   </Host>

在消除空格和 cmets 之后。

我们的问题是(显然)运行时没有source 属性来分配Context 标记中的值。我们在 Tomcat 7.0 文档中没有发现“主机/上下文”的 source 记录,并且在运行时我们在控制台中有以下内容:

Jan 12, 2017 1:23:21 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:salespoint-war' did not find a matching property.
Jan 12, 2017 1:23:21 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.7.0_07\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Java\jdk1.7.0_07\jre\bin;C:/Program Files/Java/jre1.8.0_91/bin/server;C:/Program Files/Java/jre1.8.0_91/bin;C:/Program Files/Java/jre1.8.0_91/lib/amd64;C:\ProgramData\Oracle\Java\javapath;c:\local;c:\devTools\apache-maven\bin;C:\Perl64\site\bin;C:\Perl64\bin;c:\Program Files\Java\jdk1.7.0_07\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\WinMerge;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;c:\Program Files\Apache\apache-cxf-3.1.6\bin;C:\Windows\system32;;.
Jan 12, 2017 1:23:21 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jan 12, 2017 1:23:21 PM org.apache.catalina.core.StandardService initInternal
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8443]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8443]]

我们认为它无法处理 SSL 连接,因为它无法初始化连接器。我们也不知道为什么它找不到 APR 库,因为这是 Netbeans 使用的相同 Tomcat 安装,然后它没有给出这样的错误消息。

谁能帮助我们了解这里出了什么问题?我们认为我们错过了某种配置。

以防万一 - 曾经在我们的连接器配置中发现关于其他几个 APR 特定属性的类似 SetPropertyRule 警告。我们将protocol="org.apache.coyote.http11.Http11AprProtocol" 添加到连接器以使APR 协议明确,显然Netbeans 推断它或将其作为默认值或其他东西。这消除了特定于 APR 属性的警告,但留下了这个警告。

=== 编辑

这是我们在 server.xml 中的两个连接器:

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

<!-- SSL Connector Configuration-->
<Connector 
protocol="org.apache.coyote.http11.Http11AprProtocol"
SSLCertificateFile="${catalina.base}\conf\ssl_crt\mycert\server.crt" 
SSLCertificateKeyFile="${catalina.base}\conf\ssl_crt\mycert\server.key" 
SSLCipherSuite="RC4-SHA:HIGH:!ADH:!SSLv2:@STRENGTH" 
SSLEnabled="true" 
SSLPassword="webapps.accesspointinc.com" 
SSLProtocol="all" 
acceptCount="100" 
compression="on" 
compressionMinSize="2048" 
disableUploadTimeout="true" 
enableLookups="false" 
executor="tomcatThreadPool" 
maxHttpHeaderSize="8192" 
maxThreads="200" 
port="8443" 
scheme="https" 
secure="true"/>

还有整个日志文件,包括错误信息:

Jan 12, 2017 1:23:21 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:salespoint-war' did not find a matching property.
Jan 12, 2017 1:23:21 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.7.0_07\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Java\jdk1.7.0_07\jre\bin;C:/Program Files/Java/jre1.8.0_91/bin/server;C:/Program Files/Java/jre1.8.0_91/bin;C:/Program Files/Java/jre1.8.0_91/lib/amd64;C:\ProgramData\Oracle\Java\javapath;c:\local;c:\devTools\apache-maven\bin;C:\Perl64\site\bin;C:\Perl64\bin;c:\Program Files\Java\jdk1.7.0_07\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\WinMerge;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;c:\Program Files\Apache\apache-cxf-3.1.6\bin;C:\Windows\system32;;.
Jan 12, 2017 1:23:21 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jan 12, 2017 1:23:21 PM org.apache.catalina.core.StandardService initInternal
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8443]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8443]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:821)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:638)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:663)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)
Caused by: org.apache.catalina.LifecycleException: The configured protocol [org.apache.coyote.http11.Http11AprProtocol] requires the APR/native library which is not available
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:972)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 12 more

Jan 12, 2017 1:23:21 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jan 12, 2017 1:23:21 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 789 ms
Jan 12, 2017 1:23:21 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 12, 2017 1:23:21 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.63
Jan 12, 2017 1:23:22 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 12, 2017 1:23:27 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 12, 2017 1:23:27 PM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
Jan 12, 2017 1:23:27 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "/salespoint" "read")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
    at java.security.AccessController.checkPermission(AccessController.java:555)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1302)
    at java.lang.System.getProperty(System.java:706)
    at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:146)
    at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:117)
    at org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5017)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5531)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Jan 12, 2017 1:23:27 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.ExceptionInInitializerError
    at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:269)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5017)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5531)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "c:\Program Files\apache\apache-tomcat-7.0.63\logs\applications\salespoint.log" "write")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
    at java.security.AccessController.checkPermission(AccessController.java:555)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkWrite(SecurityManager.java:979)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:203)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:136)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
    at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:223)
    at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    ... 17 more

Jan 12, 2017 1:23:27 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file
Jan 12, 2017 1:23:27 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/salespoint] startup failed due to previous errors
Jan 12, 2017 1:23:27 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
Jan 12, 2017 1:23:27 PM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager
    at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
    at org.springframework.web.context.ContextCleanupListener.<clinit>(ContextCleanupListener.java:43)
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:144)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5064)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5726)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Jan 12, 2017 1:23:27 PM org.apache.catalina.core.ApplicationContext log
INFO: Shutting down log4j
Jan 12, 2017 1:23:27 PM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.util.Log4jConfigListener
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "*" "read,write")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
    at java.security.AccessController.checkPermission(AccessController.java:555)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkPropertiesAccess(SecurityManager.java:1269)
    at java.lang.System.getProperties(System.java:622)
    at org.springframework.web.util.WebUtils.removeWebAppRootSystemProperty(WebUtils.java:167)
    at org.springframework.web.util.Log4jWebConfigurer.shutdownLogging(Log4jWebConfigurer.java:174)
    at org.springframework.web.util.Log4jConfigListener.contextDestroyed(Log4jConfigListener.java:49)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5064)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5726)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Jan 12, 2017 1:23:27 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jan 12, 2017 1:23:27 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 12, 2017 1:23:27 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 6175 ms

【问题讨论】:

  • 关于不存在 source 属性的投诉不会导致您的 TLS 问题。 Eclipse 将该属性放入您的配置中,而 Tomcat 不知道如何处理它。为了调试您的 TLS 问题,您需要发布您的 &lt;Connector&gt; 配置以及您收到的有关连接器初始化失败的完整错误消息。
  • 添加为问题的编辑。

标签: java eclipse tomcat netbeans


【解决方案1】:

您正在告诉 Tomcat 使用 APR 连接器,但无法找到 APR 库。您的java.library.path 系统属性中包含大量路径:

  • C:\Program Files\Java\jdk1.7.0_07\bin
  • C:\Windows\Sun\Java\bin
  • C:\Windows\system32
  • C:\Windows
  • C:\Program Files\Java\jdk1.7.0_07\jre\bin
  • C:/Program Files/Java/jre1.8.0_91/bin/server
  • C:/Program Files/Java/jre1.8.0_91/bin
  • C:/Program Files/Java/jre1.8.0_91/lib/amd64
  • C:\ProgramData\Oracle\Java\javapath
  • c:\local
  • c:\devTools\apache-maven\bin
  • C:\Perl64\site\bin
  • C:\Perl64\bin
  • c:\Program Files\Java\jdk1.7.0_07\bin
  • C:\Windows\system32
  • C:\Windows
  • C:\Windows\System32\Wbem
  • C:\Windows\System32\WindowsPowerShell\v1.0\
  • C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86
  • C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64
  • C:\Program Files\Microsoft SQL Server\120\DTS\Binn\
  • C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\
  • C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\
  • C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\
  • C:\Program Files\Microsoft SQL Server\120\Tools\Binn\
  • C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\
  • C:\Program Files\Microsoft SQL Server\100\DTS\Binn\
  • C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\
  • C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\
  • C:\Program Files\Microsoft SQL Server\100\Tools\Binn\
  • C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\
  • C:\Program Files\TortoiseSVN\bin
  • C:\Program Files (x86)\WinMerge
  • C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\
  • c:\Program Files\Apache\apache-cxf-3.1.6\bin
  • C:\Windows\system32
  • .(进程当前工作目录)

如果这在“Netbeans”中有效,那么我怀疑是以下问题之一:

  1. NetBeans 在启动 Tomcat 时指定了不同的 java.library.path 系统属性
  2. NetBeans 在启动 Tomcat 时使用了不同的当前工作目录

无论哪种情况,tcnative 库都必须位于 Tomcat 可以找到的位置。您需要将tcnativeapropenssl 库都放在java.library.path 系统属性中存在的位置。

我建议将它们放在可预测的目录中(例如 %CATALINA_HOME%/bin),然后在启动 Tomcat 时将 java.library.path 显式设置为 %CATALINA_HOME%/bin

【讨论】:

  • 感谢您提供完整而周到的回答。我搜索了“tcnative”,在 %CATALINA_HOME%\bin 中找到了“tcnative-1.dll”,所以它已经存在了。 “%C_H%\\webapps\docs\Apr.html”页面显示 Apache Portable Runtime (APR) 需要 APR 库、JNI 包装器 (libtcnative) 和 OpenSSL 库。它还说 tcnative-1 是一个静态编译的 .dll,包括 OpenSSL 和 APR。所以 APR 和 OpenSSL 在那里,我不确定包装器。我试试看。
  • 我将 -Djava.library.path=c:\blah\blah 放入 Window / Preferences / Java / Installed JREs / Edit 下的 JDK 命令行参数中,这似乎有效;我不再收到连接器错误。我现在收到有关记录器的权限错误,我将在星期一工作;现在开始这一周和这一天已经太晚了。
  • 如果您直接从 Apache 获得 tcnative.dll,那么它通常是静态链接的,您不需要单独的 apr.dllopenssl.dll。不过,拥有openssl.exe 是个好主意。
  • 关于系统属性;您可能希望在 Tomcat 服务本身中设置该系统属性,而不是在一般 Java 系统属性中。该库路径仅对运行 Tomcat 有效,并且可能仅对特定的 Tomcat 有效(例如,如果您正在运行多个基于 Tomcat 的服务)。
  • 再次感谢您。 Eclipse有一个通过eclipse运行java的设置;我可以在那里设置它,因为这是我的开发机器,这就是它的全部用途。但是,我想我应该考虑一下我们在 eclipse 中对其他东西进行开发时的情况。我会记住的。只需要弄清楚我可以在哪里设置它。有首选的地方吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2013-11-02
  • 1970-01-01
  • 2020-03-06
  • 2014-12-31
  • 2016-08-13
  • 2012-03-05
相关资源
最近更新 更多