"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.