Задать вопрос
Itmoing100
@Itmoing100
engineer

Как бороться с source not found в эклипс?

Здравствуйте. Сейчас решил начать учить java. У меня вин 8.1 64 бит. Установлен JDK 1.8 SE 64 бит и Eclipse neon.3 for Java EE 64 бит. Все возможные пути в переменных средах прописаны.

Когда я выполняю учебный пример, например, программу, которая представляет собой вариацию программы text-to-speech на Java.

`Main` class:

package com.example.TTS; // package of class Main
    
    import com.example.TTS.GoogleTextToSpeech; // import class GoogleTextToSpeech
    
    public class Main {
      
      public static void main(String[] args) {
        GoogleTextToSpeech gtts = new GoogleTextToSpeech(); // make instance gtts
        gtts.say("Hello dear friends", "en"); // use method say
    //  gtts.say("Bonjour mon amis!", "fr");
      }
    }


`GoogleTextToSpeech` class:

package com.example.TTS; // package of class GoogleTextToSpeech
    
    import java.io.InputStream; // import  classes from Java library
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    import java.net.URLEncoder;
    import javazoom.jl.player.Player; // import class from jl1.0.1.jar
    
    public class GoogleTextToSpeech {
      private static String ENCODING = "UTF-8"; //make constants and assign values to them
      private static String URL_BEGINNING = "http://translate.google.com/translate_tts?ie=";
      private static String URL_QUERY = "&q=";
      private static String URL_TL = "&tl=";
      private static String USER_AGENT_LITERAL = "User-Agent";
      private static String USER_AGENT = "Mozilla/4.7";
    
      public void say( String phrase, String lang ) {
        
        try {
          //Make full URL
          phrase=URLEncoder.encode(phrase, ENCODING); //assign value to variable with name 'phrase' by use method encode from class URLEncoder 
          String sURL = URL_BEGINNING + ENCODING + URL_TL + lang + URL_QUERY + phrase; //assign value to variable sURL 
              URL url = new URL(sURL); // make instance url with constructor
              
              //Create connection
              URLConnection urlConn = url.openConnection(); //assign value to variable urlConn 
              HttpURLConnection httpUrlConn = (HttpURLConnection) urlConn; //Declaring a httpUrlConn variable of type HttpURLConnection and assigning it a value to some variable urlConn (which is previously reduce to  HttpURLConnection)
              httpUrlConn.addRequestProperty(USER_AGENT_LITERAL, USER_AGENT);// use method 
              
              //Create stream
              InputStream mp3WebStream = urlConn.getInputStream();//create instance and assign it a value
              
              //Play stream
              Player plr = new Player(mp3WebStream); //create instance plr with constructor
              plr.play(); //use method
        }
          //use exception with name ex
          catch (Exception ex) { 
          ex.printStackTrace(); //use method
        }
      }
    }

И имею следующий вывод ( в эклипс консоли):

java.io.IOException: Server returned HTTP response code: 503 for URL: http://ipv4.google.com/sorry/index?continue=http://translate.google.com/translate_tts%3Fie%3DUTF-8%26tl%3Den%26q%3DHello%2Bdear%2Bfriends&q=EgRbegWvGJ3FldEFIhkA8aeDS952qU94sbK8DAgP55pH8cbMicZdMgFy
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
	at com.example.TTS.GoogleTextToSpeech.say(GoogleTextToSpeech.java:32)
	at com.example.TTS.Main.main(Main.java:9)


Когда я щелкаю на HttpURLConnection.java:1492
то получаю результат:

5a298910d9f4e879443990.png

или когда щелкаю на HttpURLConnection.java:1894
то получаю аналогичный результат: JRE4png.png

И в обоих случаях он пишет:
public class sun.net.www.protocol.http.HttpURLConnection extends java.net.HttpURLConnection
те имеет ввиду какой-то другой класс от SUN (откуда он мог у меня появится?).

Хотя если щелкаешь мышкой+ctrl на любом классе в main.java или в GoogleTextToSpeech.java (в том числе на классе HttpURLConnection )

5a2c5a215becb955842999.png

эклипс открывает исходники этих классов в новой вкладке, только почему-то вкладки называются,например, HttpURLConnection.class, а не HttpURLConnection.java

5a2c5adfd49ba633542850.png

То есть eclipse почему-то не может открывать некоторые классы. Как это исправить?

Как мне увидеть исходники этих классов? То есть где-то что-то надо прописать?
  • Вопрос задан
  • 738 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Не надо нигде ничего прописывать, зачем тебе вообще понадобились исходники этих классов? В ошибке же написано Server returned HTTP response code: 503 for URL. Разберись, что с сервером, почему он так отвечает и будет тебе счастье. Лезть для этого в кишки сан классов не нужно, тем более, что сейчас ты там ничего не поймёшь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы