2017-06-26 15 views
0

これは最小化されたテストケースです。コンパイルする必要があります。コメントアウトされた文字列は4.6バージョンであり、コンパイルして動作します。だから私のビルド環境は正しいようです。ANTLR 4.7 CharStreams.fromFileNameが見つかりません

import java.lang.*; 
import java.util.*; 
import java.io.*; 

class xx { 
    public static void main(String[] args) { 
     try { 
      // org.antlr.v4.runtime.ANTLRInputStream input = new 
      //  org.antlr.v4.runtime.ANTLRFileStream("file name here"); // compiles 
      org.antlr.v4.runtime.CharStream input = new 
       org.antlr.v4.runtime.CharStreams.fromFileName("file name here"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

$ javac xx.java 
xx.java:8: error: cannot find symbol 
      org.antlr.v4.runtime.CharStream   input = new org.antlr.v4.runtime.CharStreams.fromFileName("file name here"); 
                           ^
    symbol: class fromFileName 
    location: class CharStreams 
1 error 

私はANTLR 4.6から4.7にアップグレードしています。変更の1つは、ANTLRInputStreamおよびANTLRFileStreamの非推奨です。 (参考ストレートから優秀かつ決定的ANTLR 4を撮影したもの)されたものをそう:

import org.antlr.v4.runtime.*;     // http://www.antlr.org/ 
import org.antlr.v4.runtime.tree.*; 

String f ... 

ANTLRInputStream input = new ANTLRFileStream(f); 

は今のようなものです:

CharStream   input = new CharStreams.fromFileName(f); 

私は/は/ usr/local/libに4.7をインストールしました私は文法を変更せずにコンパイルします。私は結果のJavaをコンパイルするときしかし、私は得る:

java -jar /usr/local/lib/antlr-4.7-complete.jar xx.g4 
javac -Xlint:deprecation *.java 
xxasm.java:61: error: cannot find symbol 
       CharStream   input = new CharStreams.fromFileName(f); 
                 ^
    symbol: class fromFileName 
    location: class CharStreams 
1 error 

私のクラスパスおよびJavaのバージョンは以下のとおりです。

CLASSPATH=.:/usr/local/lib/antlr-4.7-complete.jar:/usr/local/lib/jopt-simple-5.0.3.jar:/usr/local/lib/junit-4.12-sources.jar:/usr/local/lib/gson-2.8.1.jar 

javac -version 
javac 1.8.0_131 

OSX 10.12.5 

任意のアイデア? javapでANTLR-4.7-complete.jarを見たときにすべてが正常に見える:

-verboseフラグをオンにする
... 
public static org.antlr.v4.runtime.CharStream fromFileName(java.lang.String) throws java.io.IOException; 

... 
[loading ZipFileIndexFileObject[/usr/local/lib/antlr-4.7-complete.jar(org/antlr/v4/runtime/CharStreams.class)]] 
dwasm.java:61: error: cannot find symbol 
       CharStream   input = new CharStreams.fromFileName(f); 
                 ^
    symbol: class fromFileName 
    location: class CharStreams 

また、動作しません:

CharStream   input = new org.antlr.v4.runtime.CharStreams.fromFileName(f); 

org.antlr.v4.runtime.CharStream input = new 
    org.antlr.v4.runtime.CharStreams.fromFileName("file name goes here"); 

od -c

0004720 t i m e . C h a r S t r e a m s 
0004740 . f r o m F i l e N a m e ( " f 
0004760 i l e  n a m e  h e r e " ) ; 

答えて

1
new CharStreams.fromFileName(f); 
あなたがその間違いをしたときに

はただ何らかの理由で

CharStreams.fromFileName(f); 

する必要があり、エラーメッセージがひどいです。

+0

ありがとうございました!私はそれが私が見ていない単純なものでなければならないことを知っていました。もう一度、ありがとう。 – Olsonist

関連する問題