Running docker instance not resolving gradle dependencies when calling another class

220 Views Asked by At

Hey guys I'm having this problem when using docker and gradle. I encountered NoClassDefFoundError when running a docker container after successful build. Here's my Dockerfile:

FROM nginx:latest
RUN apt-get update && apt-get install -y openjdk-11-jdk
RUN mkdir "Verteiltes_System"
WORKDIR "Verteiltes_System"
COPY src/main/java/Bank/src/* src/main/java/Bank/src/
COPY src/main/java/TCP/src/* src/main/java/TCP/src/
COPY src/main/java/Stock/* src/main/java/Stock/
COPY src/main/java/Thrift/* src/main/java/Thrift/
COPY src/* src/
COPY build/libs/* build/libs/


COPY .gradle .gradle
COPY gradlew .
COPY gradle gradle


COPY build.gradle .

RUN ./gradlew build

src/main/java/Bank/src/BankTCP.java src/main/java/Bank/src/ClientHandler.java src/main/java/Bank/src/Bank.java
CMD ["java", "-cp", "build/classes/java/main/Stock:build/classes/java/main/TCP/src:build/classes/java/main/Bank/src:build/classes/java/main/", "Bank.src.Bank"]

and here's where the Bank calls BankThriftHandler:

public Bank(String name) {
        this.name = name;
        this.securities = new HashMap<>();
        this.reserves = 1000000;
        this.isBankrupt = false;
        setTotalValue();

        try {
            bankThriftHandler = new BankThriftHandler(this);
            bankThriftHandler.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

And in BankThriftHandler the following classes are imported:

import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.*;

When running docker it stops at "bankThriftHandler = new BankThriftHandler(this);" and yielded a

NoClassDefFoundError: org/apache/thrift/transport/TTransportException.

I tested by importing these same classes in Bank and it still worked until reaching that BankThriftHandler constructor part. It seems that these dependencies are not carried over when going from Bank to BankthriftHandler

0

There are 0 best solutions below