2012-02-22 11 views
17

मैं 64 बिट डेबियन मिंट मशीन पर 32 बिट हॉटस्पॉट जेवीएम चलाने की कोशिश कर रहा हूं। पहली नजर में यह आप जब तक सभी काम करता है स्विंग का उपयोग कर कुछ को चलाने के लिए कोशिश करता हूँ:64 बिट लिनक्स पर 32 बिट जेवीएम कैसे चलाएं?

java.lang.UnsatisfiedLinkError: /opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so: 
libXext.so.6: cannot open shared object file: No such file or directory 

जोड़ा जा रहा है कि पुस्तकालय पथ के लिए: export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu

लेकिन तब यह इस त्रुटि देता है:

java.lang.UnsatisfiedLinkError: /opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so: 
libXext.so.6: wrong ELF class: ELFCLASS64 

किसी भी विचार और क्या यहाँ किया जा सकता है?

+5

32-बिट प्रक्रियाएं 64-बिट पुस्तकालयों को लोड नहीं कर सकती हैं। आपको 32-बिट संगतता पुस्तकालयों को स्थापित करने की आवश्यकता होगी। उबंटू पर आपको पैकेज 'ia32-libs' इंस्टॉल करना होगा। पता नहीं डेबियन पर बराबर क्या है। – Jesper

+1

* क्यों * आप 64 बिट मशीन पर 32 बिट जेवीएम चलाने की कोशिश कर रहे हैं? – Marcelo

+0

एक 32 बिट libXext खोजें? –

उत्तर

15

32-बिट JVM का उपयोग करने में सक्षम होने के लिए, आपको 32-बिट संगतता लाइब्रेरी स्थापित करने की आवश्यकता होगी। दूसरा त्रुटि संदेश का अर्थ है कि 32-बिट JVM प्रक्रिया 64-बिट लाइब्रेरी लोड करने का प्रयास कर रही है; यह काम नहीं करता है।

उबंटू पर आपको पैकेज ia32-libs पैकेज स्थापित करना होगा, जिसमें 64-बिट उबंटू के लिए 32-बिट संगतता पुस्तकालय शामिल हैं।

अद्यतन: उबंटू 13.10 शुरू की बहु मेहराब जो libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386 साथ ia32-libs बदल दिया। स्रोत: https://stackoverflow.com/a/10473415/14731

3

यदि आप 32-बिट संदर्भों का उपयोग करना चाहते हैं, तो 64-बिट JVM का उपयोग करें। यह 32 स्मृति के जीबी तक के लिए (एक से अधिक 32-बिट प्रोग्राम कर सकते हैं सामान्य रूप से) जावा 6 अद्यतन से डिफ़ॉल्ट रूप से 32-बिट संदर्भ का उपयोग करता है 23.

http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html

@Hot Licks टिप्पणी है कि आईबीएम JVM कर सकते हैं "32/64 बिट मोड" के साथ 68 जीबी तक पहुंच

यदि आपको इस राशि (या वास्तव में ऐसा कुछ भी) से अधिक उपयोग करने की आवश्यकता है, तो मैं ढेर मेमोरी का उपयोग करूंगा। यह पूर्ण जीसी समय नियंत्रण में रहता है और इसका मतलब है कि आप हमेशा 32-बिट संदर्भों का उपयोग कर सकते हैं।

+0

धन्यवाद! मुझे नहीं पता था कि "संपीड़ित ओप्स" डिफ़ॉल्ट रूप से सक्षम थे। और यही कारण है कि इससे नेटबीन्स के लिए कोई फर्क नहीं पड़ता। यह पहले से ही 32 बिट संदर्भों का उपयोग कर रहा था। तो अंत में यह कोई फर्क नहीं पड़ता है। अजीब बात है कि नेटबींस समर्थन टीम ने मुझे 32 बिट जेवीएम चलाने के लिए कहा ... –

+0

जब मैं एसओ पर सलाह देखता हूं तो मुझे आश्चर्य होता है कि 5 से 10 साल पुराना है। ;) 64-बिट प्रक्रिया मानने के लिए यह काफी स्वाभाविक है कि 64-बिट पॉइंटर्स का उपयोग करता है, यह सी में होता है जिसे सबसे अधिक कुशल माना जाता है। –

+0

मुझे लगता है कि यह किसी भी तरह से बेहतर होगा। लेकिन मेरे पास क्लाइंट जेवीएम (32 बिट) कुछ हद तक तेज कहने वाले कई लोग हैं। और हाल ही में "जावा प्रदर्शन" में, यह कहा गया है कि ऐसा इसलिए है क्योंकि कुछ कैश में अधिक प्रविष्टियां होती हैं क्योंकि वे छोटी होती हैं। इसलिए, एक बेहतर हिट दर। इसलिए प्रदर्शन में वृद्धि। मैं हमेशा संकुचित ओप्स के साथ चल रहा हूँ। लेकिन अब तक अनदेखा किया गया है इसे डिफ़ॉल्ट रूप से 32 जीबी या उससे कम के लिए लागू किया गया था। –

6

मैं CentOS 6.4 के साथ इसी तरह की समस्याओं था और समाधान ia32-libs समकक्ष स्थापित करने के लिए (रूट के रूप में) था: yum install glibc.i686 libXext.i686 libXtst.i686

+0

मैंने उपर्युक्त कोशिश की लेकिन मुझे कोई पैकेज उपलब्ध नहीं है। कोई पैकेज glibc.i686 उपलब्ध नहीं है। कोई पैकेज libXext.i686 उपलब्ध नहीं है। कोई पैकेज libXtst.i686 उपलब्ध नहीं है। –

+0

CentOS/RedHat/Fedora उपयोगकर्ताओं से धन्यवाद। बस ध्यान दें कि नवीनतम जेआरई/जेडीके के लिए libgcc.i686 पैकेज भी आवश्यक है। – Dime

12

मैं सिर्फ Ubuntu 14.04, जहां मैं अपने 32 रखना चाहता पर एक ही मुद्दा था 64-बिट इंस्टॉल पर -ट्रा ओरेकल जावा। ia32-libs उबंटू 13.10 के बाद से चला गया है, और अब ग्लिब उत्तर "केवल i386 लाइब्रेरी डाउनलोड करें जो आपको चाहिए"। दुर्भाग्यवश, यह पता लगाने का एक आसान तरीका प्रतीत नहीं होता है कि कौन से पुस्तकालय हैं।

सरल उपाय के रूप में

sudo apt-get install openjdk-7-jdk:i386 

कि i386 पुस्तकालयों की एक बड़ी संख्या में खींचती है 32-बिट OpenJDK स्थापित करने के लिए है। यदि आप चाहें तो ओपनजेडीके को दोबारा अनइंस्टॉल कर सकते हैं, लेकिन मैंने इसे जगह में छोड़ा है इसलिए मैं गलती से पुस्तकालयों को स्वतः नहीं चलाता।

पाथ पर ओरेकल जेडीके रखो, और अब एक्लिप्स और नेटबीन्स ठीक शुरू हो जाएंगे।

+0

उस जवाब के लिए बहुत कुछ धन्यवाद Cayhorstmann। मेरे बेकन बचाया! – mbrinson

+0

ia32-libs अब मौजूद नहीं है। इस मुद्दे को हल किया, धन्यवाद! –

संबंधित मुद्दे