2017-09-26 28 views
7

私のmy-jshell-skript.javaの内容は40 + 2;です。

または代わりのような実行可能:

#!/usr/bin/jshell 
40 + 2 

は、これは可能になりましたか、私はまだJavaをメインクラス以上の古い方法を取らなければならないのですか?

編集1:

C:\JDKs\jdk9.0.0.0_x64\bin>type foo.jsh 
1 + 1 

C:\JDKs\jdk9.0.0.0_x64\bin>jshell.exe foo.jsh 
| Welcome to JShell -- Version 9 
| For an introduction type: /help intro 

jshell> /exit 
| Goodbye 

C:\JDKs\jdk9.0.0.0_x64\bin> 

JShellは完全に私のファイルを無視して起動します。Windows-問題Windowsで

は、まだ私のための解決策はありません。バグですか?

編集2:Windowsの-問題

のためのソリューションは、それが私のfooの内容であることが判明しました。唯一の "その場で" 動作しない1 + 1ように思える、ファイルから読み取れません:

C:\JDKs\jdk9.0.0.0_x64\bin>type foo.jsh 
System.out.println("foo"); 

C:\JDKs\jdk9.0.0.0_x64\bin>jshell.exe foo.jsh 
foo 
| Welcome to JShell -- Version 9 
| For an introduction type: /help intro 

jshell> /exit 
| Goodbye 

C:\JDKs\jdk9.0.0.0_x64\bin> 
+0

男をhere-、これはとても迷惑です。すべてjshellの誇大宣伝であり、 'jshell helloworld.java'を実行することはできません。 –

答えて

2

ことはできパイプJShellに文字列:

echo 1 + 2 | jshell 

例:

:/# echo 1 + 2 | jshell 
| Welcome to JShell -- Version 9 
| For an introduction type: /help intro 

jshell> 1 + 2 
$1 ==> 3 

:/# 

か、ファイルから:

cat myfile | jshell 

myfileには「1 + 2」という行が含まれています。

+0

これはCygwinでは動作しません: '' ' ピーター@ AB4745 /cygdrive/c/JDKs/jdk9.0.0.0_x64/bin $ echo 2 + 3 | jshell.exe | JShellへようこそ - バージョン9 |導入の種類:/ help intro jshell> '' ' – user470370

6

あなたがそれらのステートメントでsome.jshという名前Jshell scriptファイルを作成し、jshellを実行し、そこからコマンドプロンプト上で、としてそれを実行することができます - :

MacOSXの上

jshell /path/to/some.jsh 

、私のような何かをするだろう

enter image description here

+0

スクリプトの終了後に対話モードに入ることを抑制する方法はありますか? – pnewhook

+2

@pnewhookスクリプト内から '/ exit'を使うことができます。 – nullpointer

0

JShellは、Javaクラスを直接実行するためのものではありません。 Javaクラスを実行する場合は、それでも古い方法、つまりjava <your-class-name>を実行する必要があります。 docsから

のJavaシェルツール(JShell)は Javaプログラミング言語を学習し、Javaコードのプロトタイプを作成するための対話式ツールです。 JShellは REPL(Read-Evaluate-Print Loop)で、宣言、 ステートメント、および式が入力されると評価し、すぐに結果を と表示します。

この引用に従って、JShellは個々のJava文を実行または試用するためのものです。伝統的なJavaの方法では、Javaプログラムを実行して結果を確認する前に、完全なJavaプログラムを作成する必要があります。しかし、JShellでは、完全なスタンドアロンのJavaアプリケーションを構築することなくJavaステートメントを試すことができます。

質問に答えると、いいえ、jshell my-jshell-skript.javaのようなスタンドアロンのJavaアプリケーションを呼び出すことはできません。ただし、個々のJShellコマンドまたはJava文を含むスクリプトファイルを呼び出すことはできます。あなたはJShellスクリプトにJavaプログラムからのすべての文をコピーして貼り付けるのであれば、あなたは次のようにスクリプトを実行することができます

% jshell my-jshell-skript.jsh

しかし、これは、スタンドアロンのJavaアプリケーションを実行するのと全く同じではありません。

関連する問題

 関連する問題