java - 在 NETBeans IDE 中编译后,Java 可执行 .jar 文件无法正常工作
问题描述
我正在从 Netbeans IDE 中内置的 GUI 导出 .jar 文件。它在 Netbeans 中运行良好,但一旦导出,代码中的某些逻辑就无法正确执行。
我已经尝试通过运行测试用例来显示哪些项目正在通过 if 子句进行调试。它似乎在 IDE 中运行良好,但在通过 .jar 文件运行时却不行。
for(Chamber chamber: chs)
{
if(!scheduledTools.containsKey(chamber))//unscheduled chambers
{
JOptionPane.showMessageDialog(this, chamber.getName()+": is unscheduled");
model.addElement(chamber.getName());
}
else//scheduled
{
if((scheduledTools.get(chamber).size()/range) > .25)
{
System.out.println("Range: " +range+" Scheduled: " +scheduledTools.get(chamber).size());
System.out.println("Cannot use this chambers:" +chamber.getName());
JOptionPane.showMessageDialog(this, chamber.getName()+": Cannot use this chamber");
}
else{
System.out.println("Scheduled but can use"+chamber.getName());
altModel.addElement(chamber.getName());
}
}
}
alternateChambers.setModel(altModel);alternateChambers.setSelectedIndex(0);
suggestedChambers.setModel(model);suggestedChambers.setSelectedIndex(0);
if(altModel.size()>1){JOptionPane.showMessageDialog(this, "Scheduled but can use these chambers:"+altModel);}
在下面的 seekDates 方法中进行必要的查询后:
private void seekDates(ResultSet rs) throws SQLException
{
ArrayList<String> entries;
//get how many dates we have so we can update progressbar
int results = 0;
setProgress(results);
if(rs.last()){results=rs.getRow();rs.beforeFirst();}
// processing returned data and printing into console
while(rs.next()) {
String scheduledChamber = rs.getString(2);
for(Chamber chamber : chambers){
//if the scheduled tool is a thermal chamber
//chambers get listed so far
if(!scheduledChamber.trim().toLowerCase().contains(chamber.getName().toLowerCase()))
{}//print chambers im not saving
else{
if(scheduledTools.containsKey(chamber))
{
//if key already used, just grab the list and add date
entries = scheduledTools.get(chamber);
entries.add(rs.getString(1).split(" ")[0]);
}
else
{
//if chamber hasnt been saved, add chamber and date
entries = new ArrayList<String>();
entries.add(rs.getString(1).split(" ")[0]);
scheduledTools.put(chamber, entries);
}
//System.out.println("Just saved this chamber:" +scheduledChamber+" with this date:" +scheduledTools.get(chamber));
}
;
}
publish(rs.getRow());
Thread.yield();
setProgress(100*(rs.getRow()/results));
}
}
GUI 应在一个文本字段中显示在查询中找到的腔室,而在另一个文本字段中显示其余腔室。
当我在 IDE 中运行它时。我得到了正确的结果,但是一旦我使用 build.xml 文件中的 package-for-store 选项进行编译,结果就会在一个文本字段中列出所有的房间。
在 .jar 文件中,似乎所有的分庭都只满足第一个 if 子句,其他的都不满足。
解决方案
推荐阅读
- c# - 修改列表中的最后一项
- javascript - “发送”未定义?| 不和谐.js
- python - 预期 conv2d_1_input 有 4 个维度,但得到了形状为 (15936, 64) 的数组
- android - Android 如何将 setOnEditorActionListener 添加到 EditTexts 列表
- html - 不能在同一行设置 div
- ansible - 将 bash 转换为 ansible - 替换包含单词的行
- server - jmeter如何开始向服务器发送请求
- azure - 通过 API 触发 Azure Pipelines 构建
- sitefinity - 要传递以获取 dec 交互的默认数据源名称是什么?
- php - CakePHP 3.6:计算表中不同的记录