#java
#java
Вопрос:
Постоянно получать:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/Client at com.mycompany.app.App.main(App.java:11)
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.client.Client at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
Все, что я сделал, это добавил зависимость в Pom-файл и выполнил установку mvn, и я продолжаю получать ошибку класса. Новичок в Java, не уверен, как работают зависимости, я представлял, что это похоже на NPM.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.27</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Nulla euismod turpis quam, ac pretium purus cursus eget. Sed fermentum fermentum neque, in commodo elit blandit sit amet. Suspendisse sodales elit sodales mi varius, eu venenatis ex aliquet. Nam fermentum mi id odio finibus, vel sagittis ipsum sagittis. Suspendisse lobortis posuere leo, eget dapibus dui malesuada ut. Vestibulum semper libero diam, sed porta quam pulvinar quis. Преддверие просвета в tellus sed semper.
Комментарии:
1. Я также включил: импорт com.sun.jersey.api.client.*;
2. Опубликуйте pom.xml
3. Pom предоставлен выше =)
4. Вы видите, что файл jar jersey загружен в вашу папку .m2? Вы можете найти его /Users /<yourdirectory>/.m2/repository/com / sun / jersey / jersey-client / и на компьютере с Windows это было бы C:Users {your-username}.m2repositorycomsun jerseyjersey-client
5. Да, клиент, ядро и носитель — все есть!
Ответ №1:
Вы можете попробовать следующие варианты:
-
Установите правильный прокси:
<proxy> <id>optional</id> <active>false</active> <protocol>http</protocol> <username>yourusername</username> <password>yourpassword</password> <host>company-proxy-url</host> <port>8080</port> </proxy>
-
Щелкните правой кнопкой мыши свой проект, выберите Запустить как -> Maven установить, а затем выберите Maven -> Обновить проект
Комментарии:
1. Я использую CLI, а не интеллектуальную IDE: (
2. Также, куда ведет прокси-сервер в POM?
3. Вы должны установить прокси в settings.xml из maven но, как вы сказали, требуемый файл jar загружен, тогда он может быть неприменим
4. Да, к сожалению, неприменимо.
Ответ №2:
Ваша проблема с недостаточной зависимостью. Вы также должны добавить ниже.
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.17.1</version>
</dependency>