如何避免早期java版本

时间:2016-05-04 13:27:09

标签: java swing

我今天收到以下错误: java.lang.NoSuchMethodError:javax.swing.JList.getSelectedValuesList()Ljava / util / List;

我们有一些客户仍在使用旧的java6版本。 (一些旧的已经/嵌入式版本的Windows不接受直接安装1.8 ..) 因此我在eclipse中使用编译器合规级别1.6。但是,在升级我们的软件后,一些客户报告错误/冻结。我登录后,发现以下错误: java.lang.NoSuchMethodError:getSelectedValuesList()Ljava / util / List; 似乎这个特定的JList方法是在1.7中引入的,我已经开始使用它,因为不推荐使用getSelectedValues()。 但这会破坏1.6的内容,因为1.6中不存在该方法。 我已经做了一个解决方法,而不是调用getSelectedValuesList()我现在调用以下方法:

public static <E> java.util.List<E> getSelectedValuesList(javax.swing.JList<E> l) {
    try {
        return l.getSelectedValuesList();
    }catch(java.lang.NoSuchMethodError err) {
        ArrayList<E> v = new ArrayList<E>();
        Object[] oo = l.getSelectedValues();
        for (Object o : oo) {
            v.add((E)o);
        }
        return v;
    }
}

这似乎工作正常。但我的问题是,由于源级别是1.6,我如何检测类似的错误?由于我甚至没有安装1.6,我怎么能确定我所谓的所有摆动方法实际上都适用于1.6?我不想再引入另一个bug。 : - )

0 个答案:

没有答案