嘗試以管理員權限運行 regsvr32 tcnative-1.dll 時報錯:
已加載 tcnative-1.dll,但找不到入口 DllRegisterServer
tcnative-1.dll 是 Tomcat Native (APR) 庫,採用動態鏈接庫形式供 tomcat8.exe/tomcat9.exe 運行時加載(LoadLibrary),非 COM 組件。regsvr32 專用於註冊COM 組件(需導出 DllRegisterServer/DllUnregisterServer 入口),對普通 DLL 無效。bin 目錄加載此 DLL,無需手動註冊。啟動 Tomcat,查看日誌 logs/catalina.out 或控制台輸出:
INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library 1.2.30 using APR version 1.7.0.
INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL version: OpenSSL 1.1.1k 25 Mar 2021
出現上述日誌即表明 tcnative-1.dll 已成功加載並工作,**註冊與否完全無關**。
| 誤區 | 事實 |
|---|---|
| 必須 regsvr32 註冊才能用 | 普通 DLL 不需註冊,放入 PATH/bin 目錄即可 |
| 報錯代表 APR 不工作 | 錯誤來自 regsvr32 工具,不影響 Tomcat 進程加載 |
| 需放入 System32 | 放在 Tomcat bin 目錄即可,避免版本衝突 |
忽略該錯誤。只要 Tomcat 日誌顯示 APR/OpenSSL 版本信息,說明 Native 庫已正常工作,性能優化(sendfile、非阻塞 IO)已生效。專注於應用部署與調優,而非糾結無意義的註冊操作。