sun.net.www.protocol.file从1.6 jdk迁移代码到11 jdk问题

问题描述

我在迁移使用 sun.net.*sun.net.www.protocol.file.FileURLConnection 的旧代码时遇到问题 Ant 无法在 jdk 11 上构建项目,因为 FileURLConnection 来自基础包的 8/9 版内部类。 FileURLCOnnection 用于检查返回类的实例,因此我需要很好地了解如何在不破坏逻辑的情况下替换此片段(下面的片段)。

connection instanceof FileURLConnection
    for (URL url = null; resources.hasMoreElements()
                && ((url = resources.nextElement()) != null); ) {
                try {
                    connection = url.openConnection();

                    if (connection instanceof JarURLConnection) {
                        checkJarFile((JarURLConnection) connection,pckgname,classes);
                    } else if (connection instanceof FileURLConnection) {
                        try {
                            checkDirectory(
                                new File(URLDecoder.decode(url.getPath(),"UTF-8")),classes);
                        } catch (final UnsupportedEncodingException ex) {
                            throw new ClassNotFoundException(
                                pckgname
                                    + " does not appear to be a valid package (Unsupported encoding)",ex);
                        }
                    } else
                        throw new ClassNotFoundException(pckgname + " ("
                            + url.getPath()
                            + ") does not appear to be a valid package");
                } catch (final IOException ioex) {
                    throw new ClassNotFoundException(
                        "IOException was thrown when trying to get all resources for "
                            + pckgname,ioex);
                }
            }

解决方法

您应该可以替换:

connection instanceof FileURLConnection

作者:

"file".equals(url.getProtocol())

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...