2012-06-17 43 views
8

का उपयोग कर मॉड्यूल को हल करना मैं जावा 6 और राइनो के साथ सर्वर-साइड पर मॉड्यूल लोड करने के लिए requ.js प्राप्त करने की कोशिश कर रहा हूं।require.js और जावा/राइनो

मैं ज़रूरतों को लोड करने में सक्षम हूं। खुद ही ठीक है। राइनो require() फ़ंक्शन देख सकता है। मैं बता सकता हूं क्योंकि राइनो शिकायत करता है कि जब मैं require() को requireffdkj() जैसे किसी अन्य चीज़ में बदलता हूं तो यह फ़ंक्शन नहीं मिल सकता है।

लेकिन जब मैं की तरह hello.js

var hello = 'hello'; 

निम्नलिखित में से किसी का उपयोग कर भी एक साधारण जे एस की आवश्यकता होती है, की कोशिश:

require('hello'); 
require('./hello'); 

यह काम नहीं करता। मैं

Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.JavaScriptException: [object Error] (<Unknown source>#31) in <Unknown source> at line number 31 
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:153) 
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:167) 
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247) 

मैं अपने hello.js जावा classpath के शीर्ष पर है। यही वह जगह है जहां मेरे पास require.js भी है। मैंने hello.js को हर जगह ले जाने की कोशिश की, मुझे लगता है कि यह संभवतः मेरे हार्ड ड्राइव की जड़, मेरी उपयोगकर्ता निर्देशिका की जड़, जिस निर्देशिका से मैं अपना जावा ऐप चला रहा हूं, आदि सहित कुछ भी काम नहीं कर सकता।

मैं CommonJS कल्पना (http://wiki.commonjs.org/wiki/Modules/1.0) को देखा और यह कहा गया है कि शीर्ष स्तर के आईडी (जैसे hello) "वैचारिक मॉड्यूल का नाम अंतरिक्ष रूट" से हल कर रहे हैं, जबकि रिश्तेदार आईडी (जैसे ./hello) बुला मॉड्यूल के खिलाफ हल कर रहे हैं । मुझे यकीन नहीं है कि इनमें से कोई भी बेसलाइन कहां है, और मुझे संदेह है कि यह मुद्दा है।

कोई सुझाव? क्या मैं राइनो से requ.js का भी उपयोग कर सकता हूं?

संपादित करें: सोच है कि मैं पर्यावरण नीचे टिप्पणी में नुकीले के सुझाव के अनुसार के रूप में स्थापित करने की जरूरत है, मैं भी r.js का मूल्यांकन करने की कोशिश की। (मैं require.js मूल्यांकन करने के बाद का मूल्यांकन करने की कोशिश की, और तब पुन require.js से पहले।) किसी भी स्थिति में मैं एक त्रुटि मिलती है:

Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "arguments" is not defined. (<Unknown source>#19) in <Unknown source> at line number 19 
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:153) 
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:167) 
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247) 

"तर्कों" r.js में एक चर प्रतीत होता है। मुझे लगता है कि यह कमांड लाइन तर्कों के लिए है, इसलिए मुझे नहीं लगता कि r.js मैं जो करने की कोशिश कर रहा हूं उसके लिए सही रास्ता है। हालांकि यकीन नहीं है।

+0

कुछ एपीआई को एपीआई प्रदान करने की ज़रूरत है, जो ब्राउज़र से अपेक्षित हैं। यानी, लाइब्रेरी स्क्रिप्ट लोड करने के लिए वेब ब्राउज़र सुविधाओं का उपयोग करती है। उपलब्ध कराने के लिए आप क्या कर रहे हैं? – Pointy

+0

शायद कुछ भी नहीं। :-) मुझे क्या ज़रुरत है? मैंने देखा कि एक compiler.jar है यदि आप क्लोजर कंपाइलर का उपयोग करना चाहते हैं, लेकिन यह मैं नहीं हूं। इसके अलावा मैंने rhino.jar देखा, लेकिन ऐसा लगता है कि राइनो के लिए ही है, जो जावा 6 में पहले से ही शामिल है। –

+0

वैसे मैं 100% निश्चित नहीं हूं कि क्या आवश्यक है। जेएस करता है, लेकिन उदाहरण के लिए कई ऐसे पुस्तकालय ब्राउज़र में नए '