"APR आधारित Apache Tomcat मूल निवासी पुस्तकालय नहीं मिला" क्या मतलब है?


104

मैं विंडोज पर एक्लिप्स में टॉमकैट 7 का उपयोग कर रहा हूं। टॉमकैट शुरू करते समय, मुझे निम्नलिखित जानकारी संदेश मिल रहा है:

APR आधारित Apache Tomcat मूल पुस्तकालय जो उत्पादन वातावरण में इष्टतम प्रदर्शन की अनुमति देता है java.library.path पर नहीं पाया गया था

इसका क्या मतलब है और मैं एपीआर लाइब्रेरी कैसे प्रदान कर सकता हूं?

जवाबों:


119

इसका ठीक वही अर्थ है जो यह कहता है: "APR आधारित Apache Tomcat Native पुस्तकालय जो उत्पादन वातावरण में इष्टतम प्रदर्शन की अनुमति देता है java.library.path पर नहीं पाया गया था"

संदर्भित पुस्तकालय को JNI के माध्यम से लोड किए गए एक OS विशिष्ट dll (tcnative-1.dll) में बांधा गया है। यह जावा रनटाइम (जैसे सेंडफाइल, एपोल, ओपनएसएसएल, सिस्टम स्थिति, आदि) में प्रदान नहीं किए गए ओएस फंक्शंस का उपयोग करने के लिए टॉमकैट की अनुमति देता है। टॉमकैट इसके बिना बस ठीक चलेगा, लेकिन कुछ उपयोग मामलों के लिए, यह देशी पुस्तकालयों के साथ तेज़ होगा।

यदि आप वास्तव में यह चाहते हैं, तो tcnative-1.dll(या libtcnative.soलिनक्स के लिए) डाउनलोड करें और इसे बिन फ़ोल्डर में डालें, और ग्रहण में टॉमकैट सर्वर के लॉन्च कॉन्फ़िगरेशन के लिए एक सिस्टम गुण जोड़ें।

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

1
+1 मुझे यह त्रुटि (ओपी द्वारा पोस्ट की गई) केवल ग्रहण के तहत मिल रही थी, आखिरकार यह तय हो गया जब मैंने इसे स्टैंडअलोन चलाया (निश्चित रूप से, मूल देयता को जोड़ने के बाद।) सिस्टम संपत्ति सेट करने पर टिप के लिए धन्यवाद!
asgs

7
वैसे भी .dll फ़ाइल को जोड़े बिना सुविधा को अक्षम करना है? @ ग्रेफेयर
कोरे तुगे

2
मैक ओएस के तहत IntelliJ IDEA के बारे में @greyfairer कैसे?
विमान

1
Macosx के लिए jboss- देशी पैकेज में libtcnative है : jbossweb.jboss.org/downloads/jboss-native-2-0-10 , मुझे लगता है कि यह वही बात है, जिसे MacOS में पोर्ट किया गया है?
ग्रेफेयर 13

1
हम टॉमकैट 8.0.47 पर MacOSX पर टॉमकैट-मूल स्थापित के साथ एक समस्या थी। हमने विकल्प - चित्रण, --with-ssl और -with-apr को निर्दिष्ट करके मूल रूप से मूल लिबास को सफलतापूर्वक बनाया। समस्या यह थी कि बायनेरिज़ को टॉमकैट के "लिब" फ़ोल्डर में कॉपी किया गया था, न कि "बिन" फ़ोल्डर में। बस उन्हें "बिन" पर ले जाएं और यह काम कर सकता है
'15:34

31

जब तक आप उत्पादन सर्वर नहीं चला रहे हैं, इस संदेश के बारे में चिंता न करें। यह एक पुस्तकालय है जिसका उपयोग प्रदर्शन (उत्पादन प्रणालियों पर) को बेहतर बनाने के लिए किया जाता है। टॉस्क के लिए अपाचे पोर्टेबल रनटाइम (APR) आधारित मूल पुस्तकालय से :

टॉमकैट बेहतर स्केलेबिलिटी, प्रदर्शन और देशी सर्वर प्रौद्योगिकियों के साथ बेहतर एकीकरण प्रदान करने के लिए अपाचे पोर्टेबल रनटाइम का उपयोग कर सकता है। अपाचे पोर्टेबल रनटाइम एक अत्यधिक पोर्टेबल लाइब्रेरी है जो अपाचे HTTP सर्वर 2.x के दिल में है। APR के कई उपयोग हैं, जिनमें उन्नत IO कार्यक्षमता (जैसे सेंडफाइल, एपोल और ओपनएसएसएल), OS स्तर की कार्यक्षमता (रैंडम नंबर जनरेशन, सिस्टम स्थिति, आदि), और देशी प्रोसेस हैंडलिंग (साझा मेमोरी, NT पाइप और यूनिक्स सॉकेट्स) शामिल हैं।


28

आरएचईएल लिनक्स पर सिर्फ मुद्दा:

yum install tomcat-native.x86_64

/ नोट: आपकी वास्तुकला पर निर्भर करता है 64 बिट या 32 बिट पैकेज अलग विस्तार हो सकता है /

बस इतना ही। उसके बाद आपको लॉग फ़ाइल में अगले सूचना संदेश मिलेंगे:

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

सभी ऑपरेशन पहले की तुलना में अधिक तेज़ होंगे।


2
CentOS 7 के लिए कम से कम, यह डिफ़ॉल्ट रीपो में नहीं मिला था। हालाँकि, यह ईपीईएल में था, इसलिए यम को एपेल-रिलीज़ करने के बाद, यह स्थापित करता है।
माइक ग्लीसन

2
सेंटोस 7 के लिए, yum install tomcat-nativeमेरे लिए यह तय किया
इसहाक बेतेश

22

इसके साथ उबंटू सर्वर पर मूल पुस्तकालय की स्थापना:

sudo apt-get install libtcnative-1

यदि वह काम नहीं करता तो टोमैट-देशी को स्थापित करने की आवश्यकता है

  1. Oracle java7 स्थापित करें:

    • sudo add-apt-repository ppa: webupd8team / java
    • sudo apt-get update
    • sudo apt-get install oracle-java7- इंस्टॉलर
    • sudo apt-get install oracle-java7-set-default
  2. टॉमकट एप्र स्थापित करें:

    • wget http://apache.mirror.anlx.net//apr/apr-1.5.0.tar.gz
    • टर zxvf अप्रैल-1.5.0.tar.gz
    • rm apr-1.5.0.tar.gz
    • सीडी अप्रैल -1.5.0
    • सूद ./configure
    • सूदो मेक
    • सुडोल बनाते हैं
    • निर्यात LD_LIBRARY_PATH = '$ LD_LIBRARY_PATH: / usr / स्थानीय / apr / lib'
  3. स्थापित करें


1
मैंने उन सभी की कोशिश की, लेकिन कुछ भी नहीं काम करता है। मुझे 'कॉन्फ़िगर प्रोटोकॉल मिलते रहते हैं [org.apache.coyote.http11.Http11AprProtocol] के लिए APR / देशी लाइब्रेरी की आवश्यकता होती है जो उपलब्ध नहीं है'। यहां तक ​​कि "चींटी जार" कमांड को भी किया और मेरी टॉमकैट / लिबरी डायरेक्टरी में टोमैट-देशी-1.1.33-dev.jar को कॉपी किया।
13

आपको उस निर्देशिका में परिणामी .so फ़ाइल की प्रतिलिपि बनाने की आवश्यकता है, या विशेष रूप से, java.library.path पर।
डेमकोरियु

9

मैंने बस इसके माध्यम से जाना और इसे निम्नलिखित के साथ कॉन्फ़िगर किया:

उबंटू 16.04

टोमाकट 8.5.9

Apache2.4.25

एपीआर 1.5.2

तोमकैट-देशी 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

टॉम्क नेटिव स्रोत पैकेज को डाउनलोड और इंस्टॉल करें

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
अग्निभा

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>लाइन के बिना , एपीआर लाइब्रेरी को लोड करने का कोई प्रयास नहीं है, इसलिए LD_LIBRARY_PATHऔर -Djava.library.path=सेटिंग्स को अनदेखा किया जाता है।


आप, सर, सबसे अच्छे हैं। कीबोर्ड पर माथे लगाने के घंटों के बाद, पता चलता है कि मेरे पास एपीआर / नेटिव पूरे समय सही ढंग से स्थापित था। Twas एक सरल 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.

फिर इसे ग्रहण के टॉमकैट तर्कों ( डबल-क्लिक सर्वर> ओपन लॉन्च कॉन्फ़िगरेशन > आर्ग्यूमेंट्स टैब> लॉजिक तर्क ) में जोड़ें

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

1

मुझे यह मुद्दा जावा 8 से 11 में अपग्रेड करना था । इस निर्भरता को जोड़ने के बाद, मेरा ऐप बिना किसी समस्या के लॉन्च हुआ:

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

0

जब टॉमुवेट को कक्षा नहीं मिली तो मुझे भी यही समस्या थी। अन्य लॉग फ़ाइलों को देखने का प्रयास करें। कभी-कभी कोई क्लास डीफ़ पाया गया त्रुटि विभिन्न लॉग फ़ाइलों में दिखाई देता है:

  • tomcat8-stdout
  • tomcat8-stderr
  • स्थानीय होस्ट

0

यदि आपके पास टोमैट नेटिव लाइब्रेरी नहीं है, तो इसे इसके साथ स्थापित करें:

sudo apt-get install libtcnative-1

और अगर यह अभी भी एक पुराने संस्करण के साथ इसे उन्नत है:

sudo apt-get upgrade libtcnative-1


0

मेरी समस्या थी कुछ लाइब्रेरी को जोड़ने के लिए tomcat से ग्रहण वर्ग पथ मैं सिर्फ ग्रहण करने के लिए सही परियोजना पर जा रहा हूँ और इस debug configuration -> classpath -> Add External JARsसे सभी जार फ़ाइलों को जोड़ने के लिए जा रहा apache-tomcat-7.0.35\binथा मेरी समस्या थी और यह मेरे लिए काम किया है।
यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.