2017-12-28 51 views
0

私は遠隔のインスタンスのtomcatサーバー(v.7)で実行しているプロジェクトを持っています。Javaエラー:シンボルを見つけることができません:メソッドjoin(java.lang.String、java.lang.String [])

プロジェクトをコンパイルし、ローカルに.warファイルを生成しようとすると、問題はありません。

しかし、私は、リモートAMIインスタンス上でまったく同じことをしようとするとき、私は次のエラーを取得する:次のように

[INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 21.963s [INFO] Finished at: Thu Dec 28 20:01:58 UTC 2017 [INFO] Final Memory: 114M/1431M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project wildbook: Compilation failure: Compilation failure: [ERROR] /home/ubuntu/Wildbook_javaTweetBot/src/main/java/org/ecocean/servlet/ServletUtilities.java:[866,24] cannot find symbol [ERROR] symbol: method join(java.lang.String,java.lang.String[]) [ERROR] location: class java.lang.String

ServletUtilities.javaのライン866は、読み取ります

String text2 = String.join(" ", text1); 

コンテキストの場合は、それを取り巻くコードの塊です:

text = text.replaceAll("[,.!?;:]", "$0 "); 
System.out.println("text: " + text); 
String[] text1 = text.replaceAll("[^A-Za-z0-9 ]", "").toLowerCase().split("\\s+"); //TODO I think this does a better version of what the above (text = text.replaceAll("[,.!?;:]", "$0 ");) does?? 
String text2 = String.join(" ", text1); 

私はこのコードをローカルでaj私のテキスト文字列(String textは、上記のコードが置かれているメソッドに渡されるパラメータ)として、問題なくavareplを使用していました(私は "これはテストです12/28/2018です")。

AMIインスタンス上のJavaのバージョンは次のとおりです。

openjdk version "1.8.0_91" OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~14.04-b14) OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)

mvn -version利回り:

​​

は、誰もが/これが起こっかもしれない理由を知っている私は、次のトラブルシューティングを行うために何ができるかについての提案を持っています?

+0

AMIで "mvn -version"を実行するとどうなりますか? –

+0

上記の@ChrisSnyderが更新されました。 – Atticus29

+0

一度同様の問題があっても、コードはローカルのWindowsマシンで正常にコンパイルされていましたが、認識できない文字列エラーが発生してサーバー上でエラーが発生しました。デバッグで私はウィンドウがUTF-8エンコーディングを持っていることが判明し、ファイル内の特殊文字を識別することができたが、Linuxは失敗した。私はnotepad ++でファイルを開き、特殊文字を指摘することができました。これがあなたを助けてくれますか? また、サーバー側でANTスクリプトを使用してコンパイルしていたので、オプションでencoding = UTF-8をjavacコマンドの安全側に追加しました。 –

答えて

0

問題を再現できません。私はのように見えるディレクトリ構造を持っている:私のpom.xmlがある

. 
├── pom.xml 
└── src 
    └── main 
     ├── java 
     │   └── com 
     │    └── example 
     │     └── maven 
     │      └── TestServlet.java 
     └── webapp 
      └── WEB-INF 
       └── web.xml 

を:

:あなたがTomcatの7を使用しているよう

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example.maven</groupId> 
    <artifactId>compile-test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <properties> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>${maven.compiler.source}</source> 
        <target>${maven.compiler.target}</target> 
        <showDeprecation>true</showDeprecation> 
        <showWarnings>true</showWarnings> 
        <compilerArgument>-Xlint:all</compilerArgument> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

私は私のコードは単純であるサーブレット仕様の3.0で推測しました

@WebServlet(name = "TestServlet", urlPatterns = {"/testServlet"}) 
public class TestServlet extends HttpServlet { 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String [] blah = {"a", "b", "c"}; 
     String result = String.join("-", blah); 

     response.setContentType("text/plain"); 
     response.getWriter().println("join result is =\"" + result + "\""); 
    } 
} 

Mavenは次のとおりです。

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 06:51:28-0700) 
Maven home: /home/scott/Downloads/apache-maven-3.0.5 
Java version: 1.8.0_151, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "4.10.0-38-generic", arch: "amd64", family: "unix" 

私はまったく同じであるJDKを見つけることができませんよ - 私が使用しています:

openjdk version "1.8.0_151" 
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12) 
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode) 

はあなたの問題を再現するコードの最小量を投稿することができますか?

を編集します。これはコメントのようなものですが、この多くの情報はコメントでは不可能です。

関連する問題