Код миграции с 1.6 jdk на 11 jdk проблема с sun.net.www.protocol.file

#java #migration #java-11 #java-6

#java #миграция #java-11 #java-6

Вопрос:

У меня проблема с миграцией старого кода, который использовался sun.net.* , и sun.net.www.protocol.file.FileURLConnection Ant не может создать проект на jdk 11, потому FileURLConnection что он из версии 8/9 внутреннего класса базового пакета. FileURLCOnnection использовался для проверки экземпляра возвращаемого класса, поэтому мне понадобится хорошая идея, как я могу заменить этот фрагмент без разрушения логики (фрагмент ниже).

 connection instanceof FileURLConnection
 
     for (URL url = null; resources.hasMoreElements()
                amp;amp; ((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")), pckgname, 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);
                }
            }
 

Ответ №1:

Вы должны быть в состоянии заменить:

 connection instanceof FileURLConnection
 

Автор::

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

Комментарии:

1. Спасибо! Ты мой герой: D