"APR 기반 Apache Tomcat 네이티브 라이브러리를 찾을 수 없음"이란 무엇을 의미합니까?


104

Windows의 Eclipse에서 Tomcat 7을 사용하고 있습니다. Tomcat을 시작할 때 다음 정보 메시지가 나타납니다.

프로덕션 환경에서 최적의 성능을 제공하는 APR 기반 Apache Tomcat 네이티브 라이브러리는 java.library.path에서 찾을 수 없습니다.

이것은 무엇을 의미하며 어떻게 APR 라이브러리를 제공 할 수 있습니까?

답변:


119

"프로덕션 환경에서 최적의 성능을 제공하는 APR 기반 Apache Tomcat 네이티브 라이브러리는 java.library.path에서 찾을 수 없습니다."

참조 된 라이브러리는 JNI를 통해로드 된 OS 특정 dll (tcnative-1.dll)에 번들로 제공됩니다. 이를 통해 tomcat은 Java 런타임에서 제공되지 않는 OS 기능 (예 : sendfile, epoll, OpenSSL, 시스템 상태 등)을 사용할 수 있습니다. Tomcat 없이도 잘 실행되지만 일부 사용 사례의 경우 기본 라이브러리를 사용하면 더 빠릅니다.

정말로 원한다면 tcnative-1.dll(또는 libtcnative.soLinux의 경우) 다운로드하여 bin 폴더에 넣고 eclipse에서 tomcat 서버의 시작 구성에 시스템 속성을 추가하십시오.

 -Djava.library.path=c:\dev\tomcat\bin

1
+1이 오류 (OP에 의해 게시 됨)는 Eclipse에서만 발생했지만 독립 실행 형으로 실행할 때 수정되었지만 (물론 기본 lib를 추가 한 후) 시스템 속성 설정에 대한 팁을 주셔서 감사합니다!
— asgs apr

7
어쨌든 .dll 파일을 추가하지 않고 기능을 비활성화 할 수 있습니까? @greyfairer
— Koray 투 케이

2
@greyfairer Mac OS에서 IntelliJ IDEA는 어떻습니까?
— 항공기

1
macosx 용 jboss-native 패키지에 libtcnative가 있습니다 : jbossweb.jboss.org/downloads/jboss-native-2-0-10 , MacOS로 포팅 된 것과 같은 것 같아요?
— GreyFairer

1
Tomcat 8.0.47의 MacOSX에서 Tomcat 기본 설치에 문제가 있습니다. --prefix, --with-ssl 및 -with-apr 옵션을 지정하여 네이티브 라이브러리를 성공적으로 빌드했습니다. 문제는 바이너리가 "bin"폴더가 아니라 tomcat의 "lib"폴더에 복사되었다는 것입니다. 그냥 "bin"으로
— 옮기면

31

프로덕션 서버를 실행하지 않는 한이 메시지에 대해 걱정하지 마십시오. 이것은 성능을 향상시키는 데 사용되는 라이브러리입니다 (프로덕션 시스템에서). 에서 아파치 휴대용 런타임 APR () 톰캣 네이티브 라이브러리를 기반으로 :

Tomcat은 Apache Portable Runtime을 사용하여 뛰어난 확장 성, 성능 및 기본 서버 기술과의 더 나은 통합을 제공 할 수 있습니다. Apache Portable Runtime은 Apache HTTP Server 2.x의 핵심 인 이식성이 뛰어난 라이브러리입니다. APR은 고급 IO 기능 (예 : sendfile, epoll 및 OpenSSL), OS 레벨 기능 (임의 번호 생성, 시스템 상태 등) 및 기본 프로세스 처리 (공유 메모리, NT 파이프 및 Unix 소켓)에 대한 액세스를 포함하여 많은 용도로 사용됩니다.


28

RHEL Linux에서 다음을 실행하십시오.

yum install tomcat-native.x86_64

/ 참고 : 아키텍처에 따라 64 비트 또는 32 비트 패키지는 다른 확장을 가질 수 있습니다 /

그게 다입니다. 그 후 로그 파일에서 다음 정보 메시지를 찾을 수 있습니다.

INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

모든 작업이 이전보다 눈에 띄게 빨라질 것입니다.


2
적어도 CentOS 7의 경우 기본 저장소에서 찾을 수 없습니다. 그러나 EPEL에 있었으므로 yum install epel-release를 수행하면 설치됩니다.
— Mike Gleason

2
CentOS는 7의 경우, yum install tomcat-native날 위해 고정
— 이삭 Betesh에게

22

다음을 사용하여 Ubuntu 서버에 네이티브 라이브러리를 설치합니다.

sudo apt-get install libtcnative-1

작동하지 않으면 tomcat-native를 설치해야합니다.

  1. Oracle java7을 설치합니다.

    • sudo add-apt-repository ppa : webupd8team / java
    • sudo apt-get 업데이트
    • sudo apt-get install oracle-java7-installer
    • sudo apt-get install oracle-java7-set-default
  2. tomcat apr 설치 :

  3. tomcat tomcat-native를 설치합니다.


1
나는 모든 것을 시도했지만 아무것도 작동하지 않습니다. '구성된 프로토콜 [org.apache.coyote.http11.Http11AprProtocol]에는 사용할 수없는 APR / 네이티브 라이브러리가 필요합니다'라는 메시지가 계속 표시됩니다. 심지어 "ant jar"명령을 수행하고 tomcat-native-1.1.33-dev.jar을 내 tomcat / lib 디렉토리에 복사했습니다.
— coladict 2015 년

결과 .so 파일을 해당 디렉토리 또는보다 구체적으로 java.library.path에 복사해야합니다.
— demonkoryu

9

나는 이것을 통해 다음과 같이 구성했습니다.

Ubuntu 16.04

톰캣 8.5.9

Apache2.4.25

4 월 1.5.2

Tomcat 네이티브 1.2.10

자바 8

다음은 이전 게시물을 기반으로 사용한 단계입니다.

패키지 설치

sudo apt-get update
sudo apt-get install libtcnative-1

이 패키지가 설치되었는지 확인

sudo apt-get install make 
sudo apt-get install gcc
sudo apt-get install openssl

패키지 설치

sudo apt-get install libssl-dev

Apache APR 설치 및 컴파일

cd /opt/tomcat/bin
sudo wget http://apache.mirror.anlx.net//apr/apr-1.5.2.tar.gz
sudo tar -xzvf apr-1.5.2.tar.gz
cd apr-1.5.2
sudo ./configure
sudo make
sudo make install

설치 확인

cd /usr/local/apr/lib/
ls 

컴파일 된 파일이 다음과 같이 표시되어야합니다.

libapr-1.la

Tomcat 네이티브 소스 패키지 다운로드 및 설치

cd /opt/tomcat/bin
sudo wget https://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.2.10/source/tomcat-native-1.2.10-src.tar.gz
sudo tar -xzvf tomcat-native-1.2.10-src.tar.gz
cd tomcat-native-1.2.10-src/native

JAVA_HOME 확인

sudo pico ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
source ~/.bashrc
sudo ./configure --with-apr=/usr/local/apr --with-java-home=$JAVA_HOME
sudo make
sudo make install

다음 행을 사용하여 /opt/tomcat/bin/setenv.sh 파일을 편집하십시오.

sudo pico /opt/tomcat/bin/setenv.sh
export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/usr/local/apr/lib'

바람둥이 다시 시작

sudo service tomcat restart


나는 재배치 R_X86_64_32에 대해이 오류`데.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/ssl/lib/libssl.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status make[1]: *** [libtcnative-1.la] Error 1
— Agnibha

5

데비안 8에서는 다음을 설치하여 수정합니다 libapr1-dev.

apt-get install libtcnative-1 libapr1-dev

5

이 문제도있었습니다. 당신이 경우에 할 라이브러리를 가지고 있지만, 여전히이 오류를 가지고, 그것은 구성 오류 일 수 있습니다. 귀하는 server.xml다음 줄을 나타나지 않을 수 있습니다 :

 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

(또는 주석 처리 될 수 있습니다). 이것은 <Listener>다른 리스너와 마찬가지로 최상위 수준의 자식입니다 <Server>.

포함하지 않는 <Listener>라인, 거기에 4 월 라이브러리를로드하려는 시도이다, 그래서 LD_LIBRARY_PATH및 -Djava.library.path=설정이 무시됩니다.


당신은 최고입니다. 이마를 키보드에 몇 시간 동안 적용한 후 APR / Native가 항상 올바르게 설치되어있는 것으로 나타났습니다. 단순한 server.xml 문제였습니다!
— 불멸의 스 퀴시

3

Mac OS X :

$ brew install tomcat-native
==> tomcat-native
In order for tomcat's APR lifecycle listener to find this library, you'll
need to add it to java.library.path. This can be done by adding this line
to $CATALINA_HOME/bin/setenv.sh

  CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/opt/tomcat-native/lib"

If $CATALINA_HOME/bin/setenv.sh doesn't exist, create it and make it executable.

그런 다음 Eclipse의 tomcat 인수에 추가합니다 ( Server> Open Launch Configuration > Arguments 탭> VM 인수를 두 번 클릭 ).

-Djava.library.path=/usr/local/opt/tomcat-native/lib

1

이 문제 가 Java 8에서 11로 업그레이드되었습니다 . 이 종속성을 추가 한 후 내 앱이 문제없이 시작되었습니다.

<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.25.0-GA</version>
</dependency>

0

tomсat이 수업을 찾을 수 없을 때도 같은 문제가 발생했습니다. 다른 로그 파일을보십시오. 때때로 No class def found 오류가 다른 로그 파일에 나타납니다.

  • tomcat8-stdout
  • tomcat8-stderr
  • localhost

0

Tomcat Native 라이브러리가없는 경우 다음을 사용하여 설치하십시오.

sudo apt-get 설치 libtcnative-1

그래도 이전 버전이있는 경우 다음을 사용하여 업그레이드합니다.

sudo apt-get 업그레이드 libtcnative-1


0

내 문제는 바람둥이에서 이클립스 클래스 경로에 일부 라이브러리를 추가하는 것이 었습니다. 이클립스를 클릭하여 프로젝트를 시작하고 debug configuration -> classpath -> Add External JARs모든 jar 파일 을 추가하려는 apache-tomcat-7.0.35\bin것이 내 문제였으며 나를 위해 일했습니다.
여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.