我正在按照教程使用天气库创建天气应用程序。当我尝试显示某个地方的温度时,出现错误。我认为由于库的更新,一定出现了问题。我我将分享代码、视频教程链接和错误,以便您可以准确指出错误。
代码:
public class HomeGUI extends javax.swing.JFrame {
public HomeGUI() {
initComponents();
getWeather();
}
private void getWeather() {
WeatherDoc doc=new WeatherDoc("29226594","c");
WeatherDisplay disp=new WeatherDisplay();
System.out.println(disp.getTemperature());
}
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception ex) {
java.util.logging.Logger.getLogger(HomeGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new HomeGUI().setVisible(true);
}
});
}
...
}
错误:
run:
Mar 21, 2018 11:59:48 PM com.teknikindustries.yahooweather.WeatherDoc <init>
null
SEVERE: null
java.net.UnknownHostException: xml.weather.yahoo.com
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at sun.net.www.http.HttpClient.New(HttpClient.java:339)
at sun.net.www.http.HttpClient.New(HttpClient.java:357)
...
BUILD SUCCESSFUL (total time: 10 seconds)
如有任何帮助,我们将不胜感激。
最佳答案
在 Java 中,异常尝试提供有关特定问题的信息。对于您的情况:
java.net.UnknownHostException: xml.weather.yahoo.com
这个异常(exception)应该是显而易见的。主机名 xml.weather.yahoo.com
未知。这不是任何代码的问题,只是雅虎似乎不再发布该名称。如果你看DNS results from this tool你可以看到:
DNS Record not found
您必须进行一些谷歌搜索,以了解雅虎是否仍然支持该天气协议(protocol),如果支持,该协议(protocol)的新主机名是什么。这个API page from yahoo来找我搜索yahoo Weather xml
。
如果 DNS 未返回有关地址的任何信息,则浏览器通常会返回类似 ERR_NAME_NOT_RESOLVED
(chrome) 错误的内容,并且您的 Java 代码会抛出类似 UnknownHostException
的内容。
关于java - 由于 UnknownHostException,天气应用程序无法显示温度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49414222/