java.lang.NoClassDefFoundError: Не удалось инициализировать класс java.net.ProxySelector - PullRequest
3 голосов
/ 24 декабря 2009

У меня проблема с приложением Java, которое постоянно выдает:

java.lang.NoClassDefFoundError: Не удалось инициализировать класс java.net.ProxySelector.

Я использую Suse Linux 10.3 и Java 1.6.0. Мой CLASSPATH установлен на

/ USR / Библиотека / JVM / JRE-1.6.0-OpenJDK / Lib.

Нет других пользователей, похоже, с этой ошибкой, поэтому я предполагаю, что это мои настройки. Для тех, кто интересуется, приложение является yamj (http://code.google.com/p/moviejukebox/)

Есть какие-нибудь идеи относительно того, что может отсутствовать или что я, возможно, делаю неправильно?

Изменить полный след ошибки следующим образом:

java.lang.NoClassDefFoundError: Не удалось инициализировать класс java.net.ProxySelector на sun.net.www.protocol.http.HttpURLConnection $ 5.run (HttpURLConnection.java:736) at java.security.AccessController.doPrivileged (собственный метод) на sun.net.www.protocol.http.HttpURLConnection.plainConnect (HttpURLConnection.java:732) на sun.net.www.protocol.http.HttpURLConnection.connect (HttpURLConnection.java:672) на sun.net.www.protocol.http.HttpURLConnection.getInputStream (HttpURLConnection.java:997) на com.moviejukebox.thetvdb.tools.XMLHelper.getEventReader (XMLHelper.java:19) в com.moviejukebox.thetvdb.model.Mirrors. (Mirrors.java:30) на com.moviejukebox.thetvdb.TheTVDB. (TheTVDB.java:37) на com.moviejukebox.plugin.TheTvDBPlugin. (TheTvDBPlugin.java:57) at sun.reflect.GeneratedConstructorAccessor2.newInstance (неизвестный источник) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:532) в java.lang.Class.newInstance0 (Class.java:372) в java.lang.Class.newInstance (Class.java:325) в com.moviejukebox.plugin.DatabasePluginController.getMovieDatabasePlugin (DatabasePluginController.java:96) в com.moviejukebox.plugin.DatabasePluginController.access $ 000 (DatabasePluginController.java:30) в com.moviejukebox.plugin.DatabasePluginController $ 1.initialValue (DatabasePluginController.java:44) в com.moviejukebox.plugin.DatabasePluginController $ 1.initialValue (DatabasePluginController.java:39) в java.lang.ThreadLocal.setInitialValue (ThreadLocal.java:160) на java.lang.ThreadLocal.get (ThreadLocal.java:150) в com.moviejukebox.plugin.DatabasePluginController.scan (DatabasePluginController.java:70) в com.moviejukebox.MovieJukebox.updateMovieData (MovieJukebox.java:1051) на com.moviejukebox.MovieJukebox.access $ 100 (MovieJukebox.java:80) в com.moviejukebox.MovieJukebox $ 4.call (MovieJukebox.java:613) на com.moviejukebox.MovieJukebox $ 4.call (MovieJukebox.java:600) at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:334) в java.util.concurrent.FutureTask.run (FutureTask.java:166) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1110) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:603) at java.lang.Thread.run (Thread.java

Ответы [ 4 ]

1 голос
/ 24 декабря 2009

ProxySelector - абстрактный класс. Вы пытаетесь создать экземпляр напрямую?

0 голосов
/ 27 декабря 2012

Поскольку это второй результат поиска в Google по этой ошибке, я хочу опубликовать этот фрагмент кода, который я нашел на каком-то форуме , который помог мне с тем же исключением. Не могу объяснить в деталях - это был всего лишь быстрый тестовый проект для меня, поэтому у меня не было времени для более глубокого расследования.

static { 
  try {
    Class c = Class.forName("sun.net.spi.DefaultProxySelector");
    if (c != null && ProxySelector.class.isAssignableFrom(c)) {
       theProxySelector = (ProxySelector) c.newInstance();
    }
  } catch (Exception e) {
    theProxySelector = null;
  }
}
0 голосов
/ 24 декабря 2009

Во-первых, вам не нужно помещать "/usr/lib/jvm/jre-1.6.0-openjdk/lib" в путь к классам. Команда "java" должна поместить все стандартные библиотеки J2SE в путь загрузки без каких-либо действий.

Во-вторых, было бы полезно, если бы вы дали нам полную трассировку стека, а не только сообщение об исключении. Я подозреваю, что реальная проблема заключается в том, что java.net.ProxySelector (или что-то, от чего это зависит) терпит неудачу во время статической инициализации. Но только трассировка стека может подтвердить это.

0 голосов
/ 24 декабря 2009

Мой CLASSPATH установлен на /usr/lib/jvm/jre-1.6.0-openjdk/lib.

не думаю, что это должно быть в вашем CLASSPATH

попробуйте очистить CLASSPATH и запустить его

...