Помогите Ошибка NoClassDefFoundError но класс на месте!

Абсик

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Abcik
Всем привет.

Пытаюсь подключится к локальному серверу Couchbase. (Что-то типа Memcached но поновее. Пробую использовать её, так как Memcached нету под windows. К стати, открыт для предложений, если знаете что-то такого же типа, с лёгким освоением и под windows.)

Импортировал отсюда последнюю версию апишки, написал код по туториалу, никаких ошибок при компиляции.

Но когда вызываю метод подключения вылазит NoClassDefFoundError ошибка. Может я не правильно импортировал апишку, или ещё что, но почему тогда всё импортировалось без ошибок? Я перепробовал другие версии, Maven - тоже самое.

1.png

2.png

3.png
 
Ну добавить то добавил, про класспатч видимо забыл.
 
Компилируется без ошибок потому что у тебя имеется эта либа при, собственно, компиляции. Однако, на сервере этой библиотеке нет, из-за чего ошибка и происходит. Советую разобраться с Maven получше, иначе проблемы с менеджментом зависимостей будут просто копиться.
Итоговый pom.xml должен выйти примерно таким
HTML:
<?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>me.abcik.plugins</groupId>
    <artifactId>test</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <name>Test</name>

    <description>Just a test of Couchbase</description>
    <properties>
        <java.version>11</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <finalName>Test-v${project.version}</finalName>
        <defaultGoal>clean package</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

    <repositories>
        <repository>
            <id>spigotmc-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.couchbase.client</groupId>
            <artifactId>java-client</artifactId>
            <version>3.1.5</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
Зависимости показаны в конце. scope provided значит, что библиотека и так будет предоставлена; compile же включит библиотеку в итоговый пакет. Папку ресурсов в файле, вероятно, нужно будет поменять под твою.
 
Компилируется без ошибок потому что у тебя имеется эта либа при, собственно, компиляции. Однако, на сервере этой библиотеке нет, из-за чего ошибка и происходит. Советую разобраться с Maven получше, иначе проблемы с менеджментом зависимостей будут просто копиться.
Итоговый pom.xml должен выйти примерно таким
HTML:
<?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>me.abcik.plugins</groupId>
    <artifactId>test</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <name>Test</name>

    <description>Just a test of Couchbase</description>
    <properties>
        <java.version>11</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <finalName>Test-v${project.version}</finalName>
        <defaultGoal>clean package</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

    <repositories>
        <repository>
            <id>spigotmc-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.couchbase.client</groupId>
            <artifactId>java-client</artifactId>
            <version>3.1.5</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
Зависимости показаны в конце. scope provided значит, что библиотека и так будет предоставлена; compile же включит библиотеку в итоговый пакет. Папку ресурсов в файле, вероятно, нужно будет поменять под твою.
А есть способ без мавена?

В любом случае ничего не получается... :(

Код:
<?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>test</groupId>
    <artifactId>test-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
   
    <repositories>
    <!-- This adds the Spigot Maven repository to the build -->
        <repository>
            <id>spigot-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
        </repository>
    </repositories>
    <dependencies>
    <!--This adds the Spigot API artifact to the build -->
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
       
        <dependency>
            <groupId>com.couchbase.client</groupId>
            <artifactId>java-client</artifactId>
            <version>3.1.5</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
   
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
   
</project>
 
Последнее редактирование:
А есть способ без мавена?

В любом случае ничего не получается... :(

Код:
<?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>test</groupId>
    <artifactId>test-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
  
    <repositories>
    <!-- This adds the Spigot Maven repository to the build -->
        <repository>
            <id>spigot-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
        </repository>
    </repositories>
    <dependencies>
    <!--This adds the Spigot API artifact to the build -->
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
      
        <dependency>
            <groupId>com.couchbase.client</groupId>
            <artifactId>java-client</artifactId>
            <version>3.1.5</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
  
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
  
</project>
Этого, увы, сказать не могу - я с Eclipse работал очень не долго. У @alexandrage это основная IDE, может подскажет позже.
По поводу сборки с мавеном - содержит ли итоговый джарник соответствующую либу, когда открываешь как архив? T.е. папки com/couchbase/client.
 
Этого, увы, сказать не могу - я с Eclipse работал очень не долго. У @alexandrage это основная IDE, может подскажет позже.
По поводу сборки с мавеном - содержит ли итоговый джарник соответствующую либу, когда открываешь как архив? T.е. папки com/couchbase/client.
нет
 
Вручную запакуй в один jar. Или преврати ту либу в загружаемый плагин для ведра написав Plugin класс и plugin.yml.
Сидел 2 часа и загружал вручную сорсы, которые необходимы. С каждым новым загружаемым, он требовал ещё несколько, которые в свою очередь требовали ещё что-то. А это всё ещё попробуй найди...

В общем какой-то ужас, уже всё желание отпало использовать эту утилиту...
 
Берешь готовую либу, которая подключена к проекту. То есть, собственно сам JAR. Распаковываешь его. Все классы оттуда запихиваешь в свой скомпиленный JAR, соблюдая такие же пути.
 
Сидел 2 часа и загружал вручную сорсы, которые необходимы. С каждым новым загружаемым, он требовал ещё несколько, которые в свою очередь требовали ещё что-то. А это всё ещё попробуй найди...

В общем какой-то ужас, уже всё желание отпало использовать эту утилиту...
Не сурсы надо было, а бинарник.
 
Сидел 2 часа и загружал вручную сорсы, которые необходимы. С каждым новым загружаемым, он требовал ещё несколько, которые в свою очередь требовали ещё что-то. А это всё ещё попробуй найди...

В общем какой-то ужас, уже всё желание отпало использовать эту утилиту...
Скачай IntelliJ IDEA и уже там пиши. Не забудь накатить плуг на плагины майна. Само создаёт plugin.yml, pom.xml и мейн класс
 
Скачай IntelliJ IDEA и уже там пиши. Не забудь накатить плуг на плагины майна. Само создаёт plugin.yml, pom.xml и мейн класс
Плагины эти подключают устаревшие зависимости (по крайней мере для банжи)
 
Назад
Верх