2011-06-15 7 views
5

जब मैं विंडोज 7 64 बिट पर आरईपीएल शुरू (यह मेरे Windows XP लैपटॉप पर ठीक काम करता है) मैं निम्न संदेश प्राप्त करने में असफल:बनाया JLineReader (स्काला आरईपीएल)

Failed to created JLineReader: java.lang.NoClassDefFoundError: Could not initial 
ize class org.fusesource.jansi.internal.Kernel32 
Falling back to SimpleReader. 

यह इतिहास और कोड का मतलब पूरा काम नहीं करते हैं।

मैंने समस्या को हल किया है लेकिन मुझे कोई समाधान नहीं मिला है। मेरे पास एसबीटी या मेवेन या आईवी स्थापित नहीं है इसलिए मुझे नहीं लगता कि यह उन लोगों के साथ कुछ भी करना है। मेरा% SCALA_HOME% सही तरीके से स्थापित है।

इस धागे में स्कैला 2.8 पर निर्भरता के बारे में कुछ है: http://www.scala-lang.org/node/9855, लेकिन मुझे समझ में नहीं आता कि यह मेरे सिस्टम पर कैसे हल करें।

इस धागे में सुझावों के अनुसार: http://www.scala-lang.org/node/9795 मैंने अपने एमएस सी ++ पुस्तकालयों को अद्यतन किया है, लेकिन अभी भी समस्या है। मैंने पोस्ट # 11 में सुझाए गए कोड को चलाया और निम्न प्राप्त किया:

scala> println(System.getProperty("java.library.path")) 

C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\ 
Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;c:\Program F 
iles (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Win 
dows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files 
(x86)\QuickTime\QTSystem\;C:\Program Files (x86)\ZipGenius 6\;C:\Program Files (
x86)\Java\jdk1.6.0_22\bin;C:\Program Files\SlikSvn\bin\;C:\Program Files\apache- 
ant-1.8.2\bin;C:\Program Files\TortoiseSVN\bin;C:\cygwin\bin;C:\Program Files (x 
86)\Notepad++;C:\Program Files (x86)\groovy-1.7.10\bin;C:\Program Files\scala2.9 
\bin 

scala> println(org.fusesource.jansi.internal.WindowsSupport.getConsoleMode) 

java.lang.NoClassDefFoundError: Could not initialize class org.fusesource.jansi. 
internal.Kernel32 
     at org.fusesource.jansi.internal.WindowsSupport.getConsoleMode(WindowsSu 
pport.java:48) 
     at .<init>(<console>:8) 
     at .<clinit>(<console>) 
     at .<init>(<console>:11) 
     at .<clinit>(<console>) 
     at $export(<console>) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:592) 

     at scala.tools.nsc.interpreter.IMain$Request$$anonfun$10.apply(IMain.sca 
la:828) 
     at scala.tools.nsc.interpreter.Line$$anonfun$1.apply$mcV$sp(Line.scala:4 
3) 
     at scala.tools.nsc.io.package$$anon$2.run(package.scala:31) 
     at java.lang.Thread.run(Unknown Source) 

काम करने के लिए इसे प्राप्त करने में कोई मदद की सराहना की!

+0

कैसे आप Izpack संस्थापक –

+0

@Daniel सामान्य तरीका स्थापित किया typesafe के संस्थापक के माध्यम से स्थापित करने के लिए प्रयास करें:?। यह izpack अधिक चालाक हो रहा है –

+0

Mmmmm साथ स्काला –

उत्तर

4

संपादित करें: समाधान del %TEMP%\jansi.dll टाइप करना था - कारण के लिए नीचे huynhjl की टिप्पणी देखें।


ऐसा लगता है कि आरईपीएल 64-बिट जेआरई के साथ असंगत है। मैंने 32-बिट संस्करण का उपयोग करने के लिए उन्नत सिस्टम सेटिंग्स में JAVA_HOME पर्यावरण चर बदल दिया, यानी C:\Program Files\Java\jre6 से C:\Program Files (x86)\Java\jdk1.6.0_22 पर।

तब मैं बग को दूर करने के (है कि अभी भी वहाँ है) लाइन 24 बदलकर

if exist "%JAVA_HOME%\bin\java.exe" set _JAVACMD=%JAVA_HOME%\bin\java.exe 

से

if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe" 

पड़ा scala.bat फ़ाइल में है और अब यह ठीक काम करता है।

कमांड लाइन से java बहुत चालाक अपने पथ या JAVA_HOME चर की परवाह किए बिना 64-बिट क्रम का उपयोग करने के लिए है, लेकिन scala का उपयोग करता है जो कुछ भी आप JAVA_HOME में निर्दिष्ट (जो वास्तव में शायद जिस तरह से यह होना चाहिए)। लेकिन 64-बिट रनटाइम 32-बिट की तुलना में बहुत तेज़ है, इसलिए मैं इसका उपयोग करना चाहता हूं।

फिलहाल ऐसा लगता है कि मुझे पूरी तरह कार्यात्मक आरईपीएल और 64-बिट जेवीएम पर चलना है। :(

+12

मैं एक सिद्धांत है, लेकिन मैं में नहीं हूँ। मेरे Win64 के सामने इसे सत्यापित करने के लिए इंस्टॉल करें। 'jlineijar' में दो 'jansi.dll' बंडल किए गए हैं, एक 32 बिट्स के लिए और एक 64 बिट्स के लिए एक है। जिसे उठाया जा रहा है उसे' सूर्य के मूल्य के आधार पर चुना जाता है। arch.data.model' system property (32 या 64)। एक बार अनपॅक किए जाने पर डीएलएल टाइमस्टैम्प के आधार पर रीफ्रेश नहीं होता है। तो मेरा अनुमान है कि आपने पहले 32 बिट्स संस्करण चलाया था जो 32 बिट्स डीएल को अनपॅक किया गया था। 64 बिट्स शुरू करते समय JVM, 'jansi.dll' असंगत है। इसलिए 'del% TEMP% \ jansi.dll' आज़माएं और फिर 64 बिट्स पर अपना स्कैला शुरू करें यह देखने के लिए कि यह काम करता है या नहीं। – huynhjl

+0

@huynhjl यह काम करता है! Tyvm –

+2

मैंने सबमिट किया है समस्या ट्रैकर में निम्न समस्या का सामना किया: https://issues.scala-lang.org/browse/SI-4703 – huynhjl