Skip to content

Commit 93cbff5

Browse files
author
Paul Verest 伟保罗
committed
work dir and env for JJS
1 parent 4efd495 commit 93cbff5

File tree

7 files changed

+216
-8
lines changed

7 files changed

+216
-8
lines changed
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
2+
<html>
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5+
<title>C:\Users\weibl\git\NTS\nodeclipse-1\org.nodeclipse.help\contents\.nashorn.md.html</title>
6+
7+
8+
<style type="text/css">
9+
10+
.markdown-body {
11+
border: 1px solid #CACACA;
12+
padding: 30px;
13+
font-size: 14px;
14+
line-height: 1.6;
15+
}
16+
17+
.markdown-body h2 {
18+
border-bottom: 1px solid #CCCCCC;
19+
}
20+
21+
.markdown-body code {
22+
white-space: nowrap;
23+
}
24+
25+
.markdown-body code, .markdown-body tt {
26+
background-color: #F8F8F8;
27+
border: 1px solid #EAEAEA;
28+
border-radius: 3px 3px 3px 3px;
29+
margin: 0 2px;
30+
padding: 0 5px;
31+
}
32+
33+
.markdown-body .highlight pre, .markdown-body pre {
34+
background-color: #F8F8F8;
35+
border: 1px solid #CCCCCC;
36+
border-radius: 3px 3px 3px 3px;
37+
font-size: 13px;
38+
line-height: 19px;
39+
overflow: auto;
40+
padding: 6px 10px;
41+
}
42+
43+
.markdown-body img {
44+
border: 0 none;
45+
}
46+
47+
pre, code, tt {
48+
font-family: Consolas,"Liberation Mono",Courier,monospace;
49+
font-size: 12px;
50+
}
51+
</style>
52+
53+
54+
<script type="text/javascript">
55+
56+
function getDocumentScrollTop()
57+
{
58+
var res = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset || 0;
59+
// alert(res);
60+
return res;
61+
}
62+
63+
function setDocumentScrollTop(ypos)
64+
{
65+
window.scrollTo(0, ypos);
66+
}
67+
68+
</script>
69+
70+
71+
</head>
72+
<body class="markdown-body">
73+
<h1> <a name="nashorn" class="anchor" href="..md.html#nashorn"><span class="octicon octicon-link"></span></a>Nashorn</h1>
74+
<h2> <a name="links" class="anchor" href="..md.html#links"><span class="octicon octicon-link"></span></a>Links</h2>
75+
<p>Main blog <a href="https://blogs.oracle.com/nashorn/">https://blogs.oracle.com/nashorn/</a> by Jim Laskey</p>
76+
<p>Sources: <a href="http://hg.openjdk.java.net/nashorn/jdk8/nashorn">http://hg.openjdk.java.net/nashorn/jdk8/nashorn</a></p>
77+
<ul>
78+
<li> <p><a href="http://insin-notes.readthedocs.org/en/latest/JavaOne2012/nashorn_node_jpa_persistence_bof.html">http://insin-notes.readthedocs.org/en/latest/JavaOne2012/nashorn_node_jpa_persistence_bof.html</a> references Node.jar project (implementation of Node.js on JVM). However there are no more news, and the projects is closed-sourced in Oracle.</p>
79+
<ul>
80+
<li>Node.jar, Akhil Arora</li>
81+
<li>JPA &amp; Node.jar, Doug Clarke</li>
82+
</ul> </li>
83+
<li><p><a href="http://download.java.net/jdk8/docs/technotes/guides/scripting/nashorn/">Java Platform, Standard Edition Nashorn User's Guide</a></p></li>
84+
<li><p><a href="http://hg.openjdk.java.net/nashorn/jdk8/nashorn/raw-file/29b2b2ed954c/docs/JavaScriptingProgrammersGuide.html">Java Scripting Programmer's Guide</a></p></li>
85+
</ul>
86+
<p>Old and excited blog post: <a href="http://kaeff.net/posts/why-ruby-and-nodejs-folks-should-care-about-project-nashorn.html">http://kaeff.net/posts/why-ruby-and-nodejs-folks-should-care-about-project-nashorn.html</a></p>
87+
<p>If you use JavaFX inside JavaScript, you should use SDK, not just JRE.</p>
88+
<h2> <a name="java-8-script-utils" class="anchor" href="..md.html#java-8-script-utils"><span class="octicon octicon-link"></span></a>Java 8 script utils</h2>
89+
<p>Java 8 goes with 2 utils: <code>jjs</code> for running JavaScript on Nashorn engine and <code>jrunscript</code> for running any script engine</p>
90+
<h3> <a name="jjs-command-line-util" class="anchor" href="..md.html#jjs-command-line-util"><span class="octicon octicon-link"></span></a><code>jjs</code> command line util</h3>
91+
<div class="highlight highlight-txt">
92+
<pre> <span class="err">C:\Program</span> <span class="err">Files\Java\jdk1.8.0\bin&gt;jjs.exe</span> <span class="err">-v</span>
93+
94+
<span class="err">nashorn</span> <span class="err">1.8.0</span>
95+
96+
97+
<span class="err">C:\Program</span> <span class="err">Files\Java\jdk1.8.0\bin&gt;jjs.exe</span> <span class="err">-h</span>
98+
99+
<span class="err">jjs</span> <span class="err">[&lt;options&gt;]</span> <span class="err">&lt;files&gt;</span> <span class="err">[--</span> <span class="err">&lt;arguments&gt;]</span>
100+
<span class="err">-</span><span class="nb">D</span> <span class="p">(</span><span class="s">-Dname=value.</span> <span class="s">Set</span> <span class="s">a</span> <span class="s">system</span> <span class="s">property.</span> <span class="s">This</span> <span class="s">option</span> <span class="s">can</span> <span class="s">be</span> <span class="s">repeated.</span><span class="p">)</span>
101+
102+
<span class="err">-cp,</span> <span class="err">-</span><span class="nb">classpath</span> <span class="p">(</span><span class="s">-cp</span> <span class="s">path.</span> <span class="s">Specify</span> <span class="s">where</span> <span class="s">to</span> <span class="s">find</span> <span class="s">user</span> <span class="s">class</span> <span class="s">files.</span><span class="p">)</span>
103+
104+
<span class="err">-doe,</span> <span class="err">-dump-on-</span><span class="nb">error</span> <span class="p">(</span><span class="s">Dump</span> <span class="s">a</span> <span class="s">stack</span> <span class="s">trace</span> <span class="s">on</span> <span class="s">errors.</span><span class="p">)</span>
105+
<span class="err">param:</span> <span class="err">[true|false]</span> <span class="err">default:</span> <span class="err">false</span>
106+
107+
<span class="err">-fv,</span> <span class="err">-</span><span class="nb">fullversion</span> <span class="p">(</span><span class="s">Print</span> <span class="s">full</span> <span class="s">version</span> <span class="s">info</span> <span class="s">of</span> <span class="s">Nashorn.</span><span class="p">)</span>
108+
<span class="err">param:</span> <span class="err">[true|false]</span> <span class="err">default:</span> <span class="err">false</span>
109+
110+
<span class="err">-</span><span class="nb">fx</span> <span class="p">(</span><span class="s">Launch</span> <span class="s">script</span> <span class="s">as</span> <span class="s">an</span> <span class="s">fx</span> <span class="s">application.</span><span class="p">)</span>
111+
<span class="err">param:</span> <span class="err">[true|false]</span> <span class="err">default:</span> <span class="err">false</span>
112+
113+
<span class="err">-h,</span> <span class="err">-</span><span class="nb">help</span> <span class="p">(</span><span class="s">Print</span> <span class="s">help</span> <span class="s">for</span> <span class="s">command</span> <span class="s">line</span> <span class="s">flags.</span><span class="p">)</span>
114+
<span class="err">param:</span> <span class="err">[true|false]</span> <span class="err">default:</span> <span class="err">false</span>
115+
116+
<span class="err">-</span><span class="nb">scripting</span> <span class="p">(</span><span class="s">Enable</span> <span class="s">scripting</span> <span class="s">features.</span><span class="p">)</span>
117+
<span class="err">param:</span> <span class="err">[true|false]</span> <span class="err">default:</span> <span class="err">false</span>
118+
119+
<span class="err">-</span><span class="nb">strict</span> <span class="p">(</span><span class="s">Run</span> <span class="s">scripts</span> <span class="s">in</span> <span class="s">strict</span> <span class="s">mode.</span><span class="p">)</span>
120+
<span class="err">param:</span> <span class="err">[true|false]</span> <span class="err">default:</span> <span class="err">false</span>
121+
122+
<span class="err">-t,</span> <span class="err">-</span><span class="nb">timezone</span> <span class="p">(</span><span class="s">Set</span> <span class="s">timezone</span> <span class="s">for</span> <span class="s">script</span> <span class="s">execution.</span><span class="p">)</span>
123+
<span class="err">param:</span> <span class="err">&lt;timezone&gt;</span> <span class="err">default:</span> <span class="err">Asia/Shanghai</span>
124+
125+
<span class="err">-v,</span> <span class="err">-</span><span class="nb">version</span> <span class="p">(</span><span class="s">Print</span> <span class="s">version</span> <span class="s">info</span> <span class="s">of</span> <span class="s">Nashorn.</span><span class="p">)</span>
126+
<span class="err">param:</span> <span class="err">[true|false]</span> <span class="err">default:</span> <span class="err">false</span>
127+
</pre>
128+
</div>
129+
<h3> <a name="jrunscript-command-line-util" class="anchor" href="..md.html#jrunscript-command-line-util"><span class="octicon octicon-link"></span></a><code>jrunscript</code> command line util</h3>
130+
<div class="highlight highlight-txt">
131+
<pre> <span class="err">C:\Program</span> <span class="err">Files\Java\jdk1.8.0\bin&gt;jrunscript.exe</span> <span class="err">-h</span>
132+
<span class="err">Usage:</span> <span class="err">jrunscript</span> <span class="err">[options]</span> <span class="err">[arguments...]</span>
133+
134+
<span class="err">where</span> <span class="err">[options]</span> <span class="err">include:</span>
135+
<span class="err">-classpath</span> <span class="err">&lt;path&gt;</span> <span class="err">Specify</span> <span class="err">where</span> <span class="err">to</span> <span class="err">find</span> <span class="err">user</span> <span class="err">class</span> <span class="err">files</span>
136+
<span class="err">-cp</span> <span class="err">&lt;path&gt;</span> <span class="err">Specify</span> <span class="err">where</span> <span class="err">to</span> <span class="err">find</span> <span class="err">user</span> <span class="err">class</span> <span class="err">files</span>
137+
<span class="err">-D&lt;name&gt;=&lt;value&gt;</span> <span class="err">Set</span> <span class="err">a</span> <span class="err">system</span> <span class="err">property</span>
138+
<span class="err">-J&lt;flag&gt;</span> <span class="err">Pass</span> <span class="err">&lt;flag&gt;</span> <span class="err">directly</span> <span class="err">to</span> <span class="err">the</span> <span class="err">runtime</span> <span class="err">system</span>
139+
<span class="err">-l</span> <span class="err">&lt;language&gt;</span> <span class="err">Use</span> <span class="err">specified</span> <span class="err">scripting</span> <span class="err">language</span>
140+
<span class="err">-e</span> <span class="err">&lt;script&gt;</span> <span class="err">Evaluate</span> <span class="err">given</span> <span class="err">script</span>
141+
<span class="err">-encoding</span> <span class="err">&lt;encoding&gt;</span> <span class="err">Specify</span> <span class="err">character</span> <span class="err">encoding</span> <span class="err">used</span> <span class="err">by</span> <span class="err">script</span> <span class="err">files</span>
142+
<span class="err">-f</span> <span class="err">&lt;script</span> <span class="err">file&gt;</span> <span class="err">Evaluate</span> <span class="err">given</span> <span class="err">script</span> <span class="err">file</span>
143+
<span class="err">-f</span> <span class="err">-</span> <span class="err">Interactive</span> <span class="err">mode,</span> <span class="err">read</span> <span class="err">script</span> <span class="err">from</span> <span class="err">standard</span> <span class="err">input</span>
144+
<span class="err">If</span> <span class="err">this</span> <span class="err">is</span> <span class="err">used,</span> <span class="err">this</span> <span class="err">should</span> <span class="err">be</span> <span class="err">the</span> <span class="err">last</span> <span class="err">-f</span> <span class="err">option</span>
145+
<span class="err">-help</span> <span class="err">Print</span> <span class="err">this</span> <span class="err">usage</span> <span class="err">message</span> <span class="err">and</span> <span class="err">exit</span>
146+
<span class="err">-?</span> <span class="err">Print</span> <span class="err">this</span> <span class="err">usage</span> <span class="err">message</span> <span class="err">and</span> <span class="err">exit</span>
147+
<span class="err">-q</span> <span class="err">List</span> <span class="err">all</span> <span class="err">scripting</span> <span class="err">engines</span> <span class="err">available</span> <span class="err">and</span> <span class="err">exit</span>
148+
149+
<span class="err">If</span> <span class="err">[arguments..]</span> <span class="err">are</span> <span class="err">present</span> <span class="err">and</span> <span class="err">if</span> <span class="err">no</span> <span class="err">-e</span> <span class="err">or</span> <span class="err">-f</span> <span class="err">option</span> <span class="err">is</span> <span class="err">used,</span> <span class="err">then</span> <span class="err">first</span>
150+
<span class="err">argument</span> <span class="err">is</span> <span class="err">script</span> <span class="err">file</span> <span class="err">and</span> <span class="err">the</span> <span class="err">rest</span> <span class="err">of</span> <span class="err">the</span> <span class="err">arguments,</span> <span class="err">if</span> <span class="err">any,</span> <span class="err">are</span> <span class="err">passed</span>
151+
<span class="err">as</span> <span class="err">script</span> <span class="err">arguments.</span> <span class="err">If</span> <span class="err">[arguments..]</span> <span class="err">and</span> <span class="err">-e</span> <span class="err">or</span> <span class="err">-f</span> <span class="err">option</span> <span class="err">is</span> <span class="err">used,</span> <span class="err">then</span> <span class="err">all</span>
152+
<span class="err">[arguments..]</span> <span class="err">are</span> <span class="err">passed</span> <span class="err">as</span> <span class="err">script</span> <span class="err">arguments.</span> <span class="err">If</span> <span class="err">[arguments..],</span> <span class="err">-e,</span> <span class="err">-f</span> <span class="err">are</span>
153+
<span class="err">missing,</span> <span class="err">then</span> <span class="err">interactive</span> <span class="err">mode</span> <span class="err">is</span> <span class="err">used.</span>
154+
155+
<span class="err">C:\Program</span> <span class="err">Files\Java\jdk1.8.0\bin&gt;jrunscript.exe</span> <span class="err">-q</span>
156+
<span class="err">Language</span> <span class="err">ECMAScript</span> <span class="err">ECMA</span> <span class="err">-</span> <span class="err">262</span> <span class="err">Edition</span> <span class="err">5.1</span> <span class="err">implemention</span> <span class="err">&quot;Oracle</span> <span class="err">Nashorn&quot;</span> <span class="err">1.8.0</span>
157+
</pre>
158+
</div>
159+
<h3> <a name="contribute" class="anchor" href="..md.html#contribute"><span class="octicon octicon-link"></span></a>Contribute</h3>
160+
<p><a href="https://github.com/Nodeclipse/nodeclipse-1/blob/master/org.nodeclipse.help/contents/nashorn.md" target="_blank">Edit online on GitHub</a></p>
161+
</body>
162+
</html>

org.nodeclipse.help/contents/nashorn.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,16 @@ Sources: <http://hg.openjdk.java.net/nashorn/jdk8/nashorn>
2424

2525
Old and excited blog post: <http://kaeff.net/posts/why-ruby-and-nodejs-folks-should-care-about-project-nashorn.html>
2626

27+
If you use JavaFX inside JavaScript, you should use SDK, not just JRE.
2728

29+
## Java 8 script utils
30+
31+
Java 8 goes with 2 utils: `jjs` for running JavaScript on Nashorn engine
32+
and `jrunscript` for running any script engine
2833

2934
### `jjs` command line util
3035

36+
```txt
3137
C:\Program Files\Java\jdk1.8.0\bin>jjs.exe -v
3238
3339
nashorn 1.8.0
@@ -63,9 +69,11 @@ Old and excited blog post: <http://kaeff.net/posts/why-ruby-and-nodejs-folks-sho
6369
6470
-v, -version (Print version info of Nashorn.)
6571
param: [true|false] default: false
72+
```
6673

6774
### `jrunscript` command line util
6875

76+
```txt
6977
C:\Program Files\Java\jdk1.8.0\bin>jrunscript.exe -h
7078
Usage: jrunscript [options] [arguments...]
7179
@@ -92,6 +100,7 @@ Old and excited blog post: <http://kaeff.net/posts/why-ruby-and-nodejs-folks-sho
92100
93101
C:\Program Files\Java\jdk1.8.0\bin>jrunscript.exe -q
94102
Language ECMAScript ECMA - 262 Edition 5.1 implemention "Oracle Nashorn" 1.8.0
103+
```
95104

96105
### Contribute
97106

org.nodeclipse.jjs/META-INF/MANIFEST.MF

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ Require-Bundle: org.eclipse.ui,
1212
org.nodeclipse.ui
1313
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
1414
Bundle-ActivationPolicy: lazy
15+
Import-Package: org.nodeclipse.debug.launch,
16+
org.nodeclipse.debug.util

org.nodeclipse.jjs/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
3+
`Import-Package: org.nodeclipse.debug.launch` in MANIFEST.MF is for `org.nodeclipse.debug.launch.LaunchConfigurationEnvironmentTab`
4+
5+
org.nodeclipse.debug.util is for in org.nodeclipse.phantomjs.launch.LaunchConfigurationDelegate
6+
7+
TODO copy that Class or make .debug module general (not Node.js related)

org.nodeclipse.jjs/src/org/nodeclipse/jjs/launch/Constants.java renamed to org.nodeclipse.jjs/src/org/nodeclipse/jjs/launch/ConstantsJJS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.nodeclipse.jjs.launch;
22

3-
public class Constants {
3+
public class ConstantsJJS {
44

55
public static final String PROCESS_MESSAGE = "JJS Process";
66

org.nodeclipse.jjs/src/org/nodeclipse/jjs/launch/LaunchConfigurationDelegate.java

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.io.File;
44
import java.util.ArrayList;
5+
import java.util.HashMap;
56
import java.util.List;
7+
import java.util.Map;
68

79
import org.eclipse.core.resources.ResourcesPlugin;
810
import org.eclipse.core.runtime.CoreException;
@@ -14,13 +16,16 @@
1416
import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
1517
import org.eclipse.debug.core.model.RuntimeProcess;
1618
import org.eclipse.jface.preference.IPreferenceStore;
19+
import org.nodeclipse.debug.util.Constants;
20+
import org.nodeclipse.debug.util.VariablesUtil;
1721
import org.nodeclipse.ui.Activator;
1822
import org.nodeclipse.ui.preferences.Dialogs;
1923
import org.nodeclipse.ui.preferences.PreferenceConstants;
2024
import org.nodeclipse.ui.util.NodeclipseConsole;
2125

2226
/**
23-
* Launching `jjs` from Java 8
27+
* Launching `jjs` from Java 8.<br>
28+
* see LaunchConfigurationDelegate in .debug and .phantomjs module for comparison.
2429
*
2530
* @since 0.7
2631
* @author Paul Verest
@@ -51,25 +56,47 @@ public void launch(ILaunchConfiguration configuration, String mode,
5156
cmdLine.add(jjsPath);
5257

5358
if (isDebugMode) {
54-
//TODO how to debug
59+
//TODO research how to debug
5560
}
5661

5762
String file = configuration.getAttribute("KEY_FILE_PATH", "");
5863
String filePath = ResourcesPlugin.getWorkspace().getRoot().findMember(file).getLocation().toOSString();
5964
// path is relative, so cannot find it, unless get absolute path
6065
cmdLine.add(filePath);
6166

67+
String workingDirectory = configuration.getAttribute(Constants.ATTR_WORKING_DIRECTORY, "");
68+
File workingPath = null;
69+
if(workingDirectory.length() == 0) {
70+
workingPath = (new File(filePath)).getParentFile();
71+
} else {
72+
workingDirectory = VariablesUtil.resolveValue(workingDirectory);
73+
if(workingDirectory == null) {
74+
workingPath = (new File(filePath)).getParentFile();
75+
} else {
76+
workingPath = new File(workingDirectory);
77+
}
78+
}
79+
80+
Map<String, String> envm = new HashMap<String, String>();
81+
envm = configuration.getAttribute(Constants.ATTR_ENVIRONMENT_VARIABLES, envm);
82+
String[] envp = new String[envm.size()];
83+
int idx = 0;
84+
for(String key : envm.keySet()) {
85+
String value = envm.get(key);
86+
envp[idx++] = key + "=" + value;
87+
}
88+
89+
6290
for(String s : cmdLine) NodeclipseConsole.write(s+" ");
6391
NodeclipseConsole.write("\n");
6492

6593
String[] cmds = {};
6694
cmds = cmdLine.toArray(cmds);
6795
// Launch a process to debug.eg,
68-
//TODO Process p = DebugPlugin.exec(cmds, workingPath, envp);
69-
Process p = DebugPlugin.exec(cmds, null, null);
70-
RuntimeProcess process = (RuntimeProcess)DebugPlugin.newProcess(launch, p, Constants.PROCESS_MESSAGE);
96+
Process p = DebugPlugin.exec(cmds, workingPath, envp);
97+
RuntimeProcess process = (RuntimeProcess)DebugPlugin.newProcess(launch, p, ConstantsJJS.PROCESS_MESSAGE);
7198
if (isDebugMode) {
72-
//TODO how to debug
99+
//TODO research how to debug
73100
}
74101

75102
}

0 commit comments

Comments
 (0)