Соединение Databricks с Azure SQL Database с ActiveDirectoryPassword [дубликат]

Самый простой:

var milisegundos = parseInt (data.replace ("/ Date (", "") .replace (") /", "")); Var newDate = новая дата (milisegundos) .toLocaleDateString ("en-UE");

414
задан Duncan Jones 11 April 2014 в 11:38
поделиться

18 ответов

Это вызвано тем, что есть файл класса, от которого зависит ваш код, и он присутствует во время компиляции, но не найден во время выполнения. Ищите различия в времени сборки и классах времени выполнения.

199
ответ дан Mocky 15 August 2018 в 20:37
поделиться
  • 1
    У меня возникла эта ошибка при помещении исходного файла в неправильное пространство имен / пакет. I figured Я мог бы просто поместить его куда угодно, и компилятор был счастлив. Оказывается, я должен был быть более прилежным, чтобы время исполнения тоже было счастливым. – CenterOrbit 21 October 2014 в 16:34
  • 2
    У меня была эта ошибка, когда у моего сервера закончилась нехватка памяти во время загрузки файла. Каждый раз, когда я пытался загрузить, у меня была бы другая ошибка. В конце концов он сказал мне, что мне не хватает кучи. – James M. Lay 25 April 2016 в 07:47
  • 3
    Этот ответ не обязательно верен и будет вводить в заблуждение для многих людей! См. Лучший ответ от Джареда внизу. – Dave L. 31 August 2016 в 16:42
  • 4
    Я побежал mvn -X clean compiler package 2>&1 >test.log, поэтому я мог видеть детали gory перед сообщением об ошибке NoClassDefFound. – Jesse Chisholm 4 May 2017 в 16:55
  • 5
    @DaveL. Благодаря! Ответ Джареда с 400 + upvotes ниже! Один ответ с голосами -4 вверх (вниз?) - это путь выше. Существует логичная логика относительно логики упорядочения ответов SO. – Saurabh Patil 31 July 2017 в 14:00
  • 6

NoClassDefFoundError В Java

Определение:

  1. Java Virtual Machine не может найти определенный класс во время выполнения, который был доступен при компиляции время.
  2. Если во время компиляции класс присутствовал, но не доступен в пути Java-класса во время выполнения.

Примеры:

  1. Класс не находится в Classpath, нет уверенного способа узнать его, но много раз вы можете просто взглянуть на печать System.getproperty («java.classpath») и он будет печатать путь к классу оттуда, вы можете хотя бы получить представление о вашем фактическом пути к классам времени выполнения.
  2. Простой пример NoClassDefFoundError - класс принадлежит отсутствующему файлу JAR, или JAR не был добавлен в classpath или иногда Имя jar было изменено кем-то, как в моем случае, один из моих коллег изменил tibco.jar на tibco_v3.jar, и программа не работает с java.lang.NoClassDefFoundError, и мне было интересно, что случилось.
  3. Просто попытаться запустить w с явно выраженным параметром -classpath с классом classpath, который, по вашему мнению, будет работать, и если он работает, то это верный короткий признак того, что кто-то переопределяет java classpath.
  4. Проблема с правами на JAR-файл также может вызвать NoClassDefFoundError в Java.
  5. Typo on XML Configuration также может вызвать NoClassDefFoundError в Java.
  6. , когда ваш скомпилированный класс, который определен в пакете, не присутствует в одном пакете во время загрузки, как в случае JApplet он будет вызывать NoClassDefFoundError в Java.

Возможные решения:

  1. Класс недоступен в Java-классе.
  2. Если вы работая в среде J2EE, чем видимость класса среди нескольких Classloader также может вызвать java.lang.NoClassDefFoundError, см. примеры и сценарий для подробного обсуждения.
  3. Проверить на java.lang.ExceptionInInitializerError в вашем файле журнала. NoClassDefFoundError из-за сбоя статической инициализации довольно распространен.
  4. Поскольку NoClassDefFoundError является подклассом java.lang.LinkageError, он также может появиться, если некоторая его зависимость, например, родная библиотека, недоступна.
  5. Любой сценарий запуска переопределяет переменную среды Classpath.
  6. Возможно, вы запускаете свою программу с помощью команды jar, а класс не был определен в атрибуте ClassPath файла манифеста.

Ресурсы:

3 способа решения NoClassDefFoundError

java.lang.NoClassDefFoundError Шаблоны проблем

27
ответ дан Aftab Virtual 15 August 2018 в 20:37
поделиться
  • 1
    Отличный ответ. Я думаю, что я попробовал все, что вы предлагаете, и все еще есть эта проблема. Я могу исключить некоторые из них из-за банки, работающей с весной, но, похоже, не нравится java.sql (в моем случае драйвер sap db для Hana). – J E Carter II 19 June 2017 в 19:48

Техника ниже помогла мне много раз:

System.out.println(TheNoDefFoundClass.class.getProtectionDomain().getCodeSource().getLocation());

, где TheNoDefFoundClass - это класс, который может быть «потерян» из-за предпочтения старой версии той же библиотеки, что и ваша программа. Это чаще всего случается с случаями, когда клиентское программное обеспечение развертывается в доминирующем контейнере, вооружившись его собственными загрузчиками классов и множеством древних версий самых популярных библиотек.

2
ответ дан Aram Paronikyan 15 August 2018 в 20:37
поделиться

Я получаю NoClassFoundError, когда классы, загруженные загрузчиком класса времени выполнения, не могут обращаться к классам, уже загруженным корневым загрузчиком java. Поскольку разные загрузчики классов находятся в разных доменах безопасности (в соответствии с java), jvm не будет разрешать классы, уже загруженные корневым загрузчиком, которые будут разрешены в адресном пространстве загрузчика.

Запустите вашу программу с помощью java -javaagent: tracer.jar [YOUR java ARGS] '

Он производит вывод, показывающий загруженный класс, и загрузчик env, который загружал класс. Очень полезно отслеживать, почему класс не может быть разрешен.

// ClassLoaderTracer.java
// From: https://blogs.oracle.com/sundararajan/entry/tracing_class_loading_1_5

import java.lang.instrument.*;
import java.security.*;

// manifest.mf
// Premain-Class: ClassLoadTracer

// jar -cvfm tracer.jar manifest.mf ClassLoaderTracer.class

// java -javaagent:tracer.jar  [...]

public class ClassLoadTracer 
{
    public static void premain(String agentArgs, Instrumentation inst) 
    {
        final java.io.PrintStream out = System.out;
        inst.addTransformer(new ClassFileTransformer() {
            public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {

                String pd = (null == protectionDomain) ? "null" : protectionDomain.getCodeSource().toString();
                out.println(className + " loaded by " + loader + " at " + new java.util.Date() + " in " + pd);

                // dump stack trace of the thread loading class 
                Thread.dumpStack();

                // we just want the original .class bytes to be loaded!
                // we are not instrumenting it...
                return null;
            }
        });
    }
}
5
ответ дан codeDr 15 August 2018 в 20:37
поделиться

Две разные копии для проверки того же проекта

В моем случае проблема заключалась в невозможности дифференциации Eclipse между двумя разными копиями одного и того же проекта. У меня есть одна блокировка на багажнике (контроль версий SVN), а другой - в одной ветви за раз. Я опробовал одно изменение в рабочей копии как тестовый пример JUnit, который включал в себя извлечение частного внутреннего класса для самостоятельного публичного класса, и пока он работал, я открываю другую копию проекта, чтобы посмотреть вокруг на другой часть кода, которая нуждается в изменениях. В какой-то момент NoClassDefFoundError появился, жалуясь, что частного внутреннего класса не было; двойной щелчок в трассировке стека привел меня к исходному файлу с неправильной копией проекта.

Закрытие внешней копии проекта и запуск тестового примера снова избавилось от проблемы.

0
ответ дан manuelvigarcia 15 August 2018 в 20:37
поделиться

Я исправил свою проблему, отключив preDexLibraries для всех модулей:

dexOptions {
        preDexLibraries true
        ...
0
ответ дан Michael 15 August 2018 в 20:37
поделиться

Эта ошибка может быть вызвана неконтролируемыми требованиями к Java-версии.

В моем случае я смог разрешить эту ошибку, создав высокопрофильный проект с открытым исходным кодом, переключившись с Java 9 на Java 8 используя SDKMAN! .

sdk list java
sdk install java 8u152-zulu
sdk use java 8u152-zulu

Затем выполните чистую установку, как описано ниже.


При использовании Maven в качестве инструмента построения иногда полезно - и, как правило, приятно, сделать clean сборку установки с отключенным тестированием.

mvn clean install -DskipTests

Теперь, когда все построенный и установленный, вы можете продолжить и запустить тесты.

mvn test
0
ответ дан nobar 15 August 2018 в 20:37
поделиться

Хотя возможно, что это связано с несоответствием пути к классам между временем компиляции и временем выполнения, это не обязательно верно.

Важно сохранить два или три разных исключения прямо в нашей голове в этот случай:

  1. java.lang.ClassNotFoundException Это исключение указывает, что класс не найден в пути к классам. Это указывает на то, что мы пытались загрузить определение класса, и класс не существовал в пути к классам.
  2. java.lang.NoClassDefFoundError Это исключение указывает, что JVM посмотрел в своей внутренней структуре данных определения класса для определения класс и не нашел его. Это отличается от того, что он не может быть загружен из пути к классам. Обычно это указывает на то, что мы ранее пытались загрузить класс из пути к классам, но по какой-то причине он потерпел неудачу - теперь мы снова пытаемся использовать этот класс (и, следовательно, необходимо загрузить его, поскольку он провалился в последний раз) я даже не попытаюсь загрузить его, потому что мы не выполнили его загрузку ранее (и разумно подозреваем, что мы снова потерпим неудачу). Ранним отказом может быть исключение ClassNotFoundException или ExceptionInInitializerError (указывающее на отказ в статическом блоке инициализации) или любое количество других проблем. Дело в том, что NoClassDefFoundError не обязательно является проблемой класса.
632
ответ дан OldPeculier 15 August 2018 в 20:37
поделиться
  • 1
    Спасибо, что упомянул причину NoClassDefFoundError, это очень помогло мне! В моем случае ранее был исключен ExceptionInInitializerError, вот как я узнал об ошибках в статических блоках. – Thomas 21 February 2013 в 14:05
  • 2
    @Jared, Когда я получаю Error: Could not find or load main class, он будет классифицирован под какой категорией ошибок? – Vikram 19 July 2013 в 22:03
  • 3
    @Pops: сделал язык более подробным, чтобы указать объекты глаголов & quot; try & quot; :) – Jared 9 February 2014 в 22:23
  • 4
    ClassCircularityError и ClassFormatError также могут возникать во время процесса загрузки: docs.oracle.com/javase/specs/jls/se5.0/html/… – Pacerier 27 August 2014 в 03:52
  • 5
    @Vikram "не смог найти или загрузить основной класс" не является исключением Java, это вызвано запуском (который проверяет JAR и атрибут основного манифеста). – eckes 15 January 2015 в 22:38
  • 6

Java не смог найти класс A во время выполнения. Класс A был в проекте Artline из maven из другого рабочего пространства. Поэтому я импортировал ArtClient в проект Eclipse. Два из моих проектов использовали ArtClient в качестве зависимости. Я изменил ссылку на библиотеку для ссылки на проект для этих (Путь сборки -> Настроить путь сборки).

И проблема исчезла.

0
ответ дан Pekmezli Dürüm 15 August 2018 в 20:37
поделиться

Убедитесь, что это соответствует параметрам module:app и module:lib:

android {
    compileSdkVersion 23
    buildToolsVersion '22.0.1'
    packagingOptions {
    }

    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 11
        versionName "2.1"
    }
4
ответ дан Peter Mortensen 15 August 2018 в 20:37
поделиться
  • 1
    То же самое случилось со мной при программировании сервлета (NoClassDefFoundError был фактически вызван ExceptionInInitalizerError, который был вызван DateTimeParseException). Это немного вводит в заблуждение, не так ли? Я знаю, что у них, вероятно, были причины сделать это так, но было бы неплохо иметь хотя бы небольшой намек, что NoClassDefFoundError был результатом другого исключения, без необходимости его выводить. Еще раз бросать ExceptionInInitializerError было бы намного яснее. Иногда связь между ними может быть не такой очевидной. – Bartłomiej Zieliński 18 January 2016 в 10:41
  • 2
    Как ваше решение каким-либо образом относится к этой общей проблеме? – Taavi Ilves 24 May 2016 в 11:43
  • 3
    Это объясняется большинством проголосовавших ответов, когда вы сначала компилировались, файлы были там, затем вы удалили некоторые файлы, классы были удалены, поэтому во время выполнения вы получили ClassNotFound, затем вы отбросите их назад, но все же Eclipse не обратите внимание, что сгенерированные классы все еще отсутствовали, но после перезапуска Eclipse рабочая область была обновлена, и классы снова были доступны, но в целом это не решение или обходной путь, решение заключается в том, чтобы найти, какой класс / jar отсутствует во время выполнения CLASSPATH. – Jose Manuel Gomez Alvarez 5 July 2016 в 12:33
  • 4
    Конфигурация выборки не сбалансирована (три {s и два }). Ты можешь починить это? – Peter Mortensen 22 February 2018 в 16:30
  • 5
    <Я> & Quot; ЭДС & Quot; ? Вы имеете в виду & quot; MEF "? – Peter Mortensen 22 February 2018 в 16:37
  • 6
    Неа. EMf как Eclipse Modeling Framework. В автомобильной сфере мы можем столкнуться с этой ошибкой при запуске сгенерированного кода. – Aykut Kllic 23 February 2018 в 18:39

Это наилучшее решение , которое я нашел до сих пор.

Предположим, что у нас есть пакет с именем org.mypackage, содержащий классы:

  • HelloWorld (основной класс)
  • SupportClass
  • UtilClass

и файлы, определяющие этот пакет, хранятся физически в каталоге D:\myprogram (в Windows ) или /home/user/myprogram (в Linux).

Структура файла будет выглядеть так:

Когда мы вызываем Java, мы указываем имя приложение для запуска: org.mypackage.HelloWorld. Однако мы также должны сказать Java, где искать файлы и каталоги, определяющие наш пакет. Поэтому, чтобы запустить программу, мы должны использовать следующую команду:

4
ответ дан Ram Patra 15 August 2018 в 20:37
поделиться

Я обнаружил, что иногда я получаю ошибку NoClassDefFound, когда код компилируется с несовместимой версией класса, найденного во время выполнения. Конкретный экземпляр, о котором я помню, связан с библиотекой осей apache. Фактически на моем пути к классам среды исполнения было 2 версии, и она собирала устаревшую и несовместимую версию, а не правильную, вызывая ошибку NoClassDefFound. Это было в приложении командной строки, где я использовал команду, подобную этой.

set classpath=%classpath%;axis.jar

Мне удалось получить правильную версию, используя:

set classpath=axis.jar;%classpath%;
29
ответ дан shsteimer 15 August 2018 в 20:37
поделиться
  • 1
    Имел ту же проблему. Оказывается, я скомпилировал файл войны с Java7, но моя установка Tomcat использовала Java6. Мне пришлось обновить мои переменные среды – duvo 24 November 2014 в 23:40
  • 2
    Если это произойдет так, я скажу, что Java в беспорядке. +2, если это правда. Пока не могу это проверить. Если найдено true, то снова сделает + 1 (в комментариях) – supernova 20 October 2015 в 13:22

Если кто-то приходит сюда из-за ошибки java.lang.NoClassDefFoundError: org/apache/log4j/Logger, в моем случае он был создан, потому что я использовал log4j 2 (но я не добавлял все файлы, которые поставляются вместе с ним), а также некоторая библиотека зависимостей log4j 1. решение заключалось в том, чтобы добавить мост Log4j 1.x: jar log4j-1.2-api-<version>.jar, который поставляется с log4j 2. Дополнительная информация в log4j 2 migration .

0
ответ дан ST7 15 August 2018 в 20:37
поделиться

Вот код, иллюстрирующий java.lang.NoClassDefFoundError. Пожалуйста, см. ответ Джареда для подробного объяснения.

NoClassDefFoundErrorDemo.java

public class NoClassDefFoundErrorDemo {
    public static void main(String[] args) {
        try {
            // The following line would throw ExceptionInInitializerError
            SimpleCalculator calculator1 = new SimpleCalculator();
        } catch (Throwable t) {
            System.out.println(t);
        }
        // The following line would cause NoClassDefFoundError
        SimpleCalculator calculator2 = new SimpleCalculator();
    }

}

SimpleCalculator.java

public class SimpleCalculator {
    static int undefined = 1 / 0;
}
87
ответ дан xli 15 August 2018 в 20:37
поделиться
  • 1
    это отличный пример, который точно описывает проблему – Aitch 21 January 2018 в 11:01
  • 2
    И причина в том, что после первой попытки jvm уже знает, что не собирается работать и бросает другое исключение во второй раз? – ikamen 25 January 2018 в 14:51
  • 3
    – á´ ÉªÉ´á´„ᴇɴᴛ 27 September 2018 в 20:40

Я получил это сообщение после удаления двух файлов из библиотеки SRC, и когда я вернул их, я продолжал видеть это сообщение об ошибке.

Мое решение было: Перезапустить Eclipse. С тех пор я еще не видел это сообщение: -)

4
ответ дан Peter Mortensen 15 August 2018 в 20:37
поделиться
  • 1
    То же самое случилось со мной при программировании сервлета (NoClassDefFoundError был фактически вызван ExceptionInInitalizerError, который был вызван DateTimeParseException). Это немного вводит в заблуждение, не так ли? Я знаю, что у них, вероятно, были причины сделать это так, но было бы неплохо иметь хотя бы небольшой намек, что NoClassDefFoundError был результатом другого исключения, без необходимости его выводить. Еще раз бросать ExceptionInInitializerError было бы намного яснее. Иногда связь между ними может быть не такой очевидной. – Bartłomiej Zieliński 18 January 2016 в 10:41
  • 2
    Это объясняется большинством проголосовавших ответов, когда вы сначала компилировались, файлы были там, затем вы удалили некоторые файлы, классы были удалены, поэтому во время выполнения вы получили ClassNotFound, затем вы отбросите их назад, но все же Eclipse не обратите внимание, что сгенерированные классы все еще отсутствовали, но после перезапуска Eclipse рабочая область была обновлена, и классы снова были доступны, но в целом это не решение или обходной путь, решение заключается в том, чтобы найти, какой класс / jar отсутствует во время выполнения CLASSPATH. – Jose Manuel Gomez Alvarez 5 July 2016 в 12:33
  • 3
    <Я> & Quot; ЭДС & Quot; ? Вы имеете в виду & quot; MEF "? – Peter Mortensen 22 February 2018 в 16:37
  • 4
    Неа. EMf как Eclipse Modeling Framework. В автомобильной сфере мы можем столкнуться с этой ошибкой при запуске сгенерированного кода. – Aykut Kllic 23 February 2018 в 18:39
4
ответ дан Peter Mortensen 5 September 2018 в 20:00
поделиться
0
ответ дан ᴠɪɴᴄᴇɴᴛ 29 October 2018 в 03:45
поделиться
5
ответ дан Peter Mortensen 29 October 2018 в 03:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: