我正在按照教程使用天气库创建天气应用程序。当我试图显示某个地方的温度时,我收到了一个错误。我认为由于库的更新肯定会出现问题。我我将分享代码,视频教程链接和错误,以便您可以准确地指出错误。
CODE:
<HorizontalLayout/>
错误:
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);
}
});
}
...
}
任何帮助都将不胜感激。
答案 0 :(得分:2)
在Java中,例外尝试提供有关特定问题的信息。在你的情况下:
java.net.UnknownHostException: xml.weather.yahoo.com
这个例外应该是显而易见的。主机名xml.weather.yahoo.com
未知。这不是任何代码的问题,只是雅虎似乎不再发布该名称。如果您查看DNS results from this tool,您可以看到:
DNS Record not found
你必须做一些google-ing来了解雅虎是否仍然支持该天气协议,如果是,那么该协议的新主机名是什么。我yahoo weather xml
搜索了ERR_NAME_NOT_RESOLVED
。
&LT; tldr&GT;当一个浏览器,或者你的情况下是代码中的http客户端,通过名称访问服务(google.com,cnn.com,xml.weather.yahoo.com等)时,首先发生的是域名名称服务(DNS)请求查找名称,以便可以找到IP地址。然后是浏览器或代码用来连接服务并获得结果的IP地址。
如果DNS没有返回有关该地址的任何信息,那么浏览器通常会返回类似UnknownHostException
(chrome)错误的内容,而您的Java代码会抛出answer = True
myvar = f"the answer is {answer}"
之类的内容。 &LT; / tldr&GT;