# Über Classpath MongoDB Treiber einbinden und korrekte import Pfade



## Chrisux1234 (4. Mai 2018)

Leider kann ich keine Moderne IDE einsetzen.
Daher muss ich mich mit Javac begnügen.


Hier ist mein Javac Befehl:


```
javac -classpath "mongodb-driver-3.7.0-javadoc.jar:mongodb-driver-async-3.7.0-javadoc.jar:mongodb-driver-core-3.7.0-javadoc.jar:mongodb-driver-sync-3.7.0-javadoc.jar:mongo-java-driver-3.7.0-javadoc.jar"  mongodb_connection.java
```
Sofern ich alles richtig verstanden habe benötige ich folgenden Fünf Jar Dateien für die Version 3.7.0
https://mongodb.github.io/mongo-java-driver/

Die jar Dateien sind wie die java Datei im selben Ordner.
Aber nun kommen wir zu meiner vermuteten Fehlerquelle.
Die Pfade bei den Import Befehlen sind vermute ich falsch. Ich weiß aber nicht wie ich die richtig setzen soll :-(

Java Code:

```
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.ServerAddress;

import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;

import org.bson.Document;
import java.util.Arrays;
import com.mongodb.Block;

import com.mongodb.client.MongoCursor;
import static com.mongodb.client.model.Filters.*;
import com.mongodb.client.result.DeleteResult;
import static com.mongodb.client.model.Updates.*;
import com.mongodb.client.result.UpdateResult;
import java.util.ArrayList;
import java.util.List;



import java.util.List;
import java.util.Set;



import static java.util.concurrent.TimeUnit.SECONDS;

public class mongodb_connection{

    public static void main( String args[] ){

      System.out.println("Hello World");

/*
You can instantiate a MongoClient object without any parameters to connect to a MongoDB instance running on localhost on port 27017
*/
      try{
          //Connection
          //          MongoClient mongoClient = new MongoClient("127.0.0.1",27017 );

          //          DB db = mongoClient.getDB("mydb");
         
      }catch(IllegalArgumentException  ie){
          System.err.println(ie.getMessage());
      }

     
    }
}
```


Fehlermeldungen beim kompilieren:


> import com.mongodb.MongoClient;
> ^
> mongodb_connection.java:2: error: package com.mongodb does not exist
> import com.mongodb.MongoClientURI;
> ...


----------



## mrBrown (4. Mai 2018)

Chrisux1234 hat gesagt.:


> Leider kann ich keine Moderne IDE einsetzen.


Warum denn nicht? 



Chrisux1234 hat gesagt.:


> Daher muss ich mich mit Javac begnügen.


Kannst du wenigstens ein Build-Tool nutzen?
Per Hand mit Abhängigkeiten zu kompilieren verlangt hoffentlich niemand...



Chrisux1234 hat gesagt.:


> Hier ist mein Javac Befehl:
> 
> 
> ```
> ...



Die Imports sind richtig, du gibst beim Kompilieren aber nur die Javadoc-Jars an, du solltest da schon die normalen jars nutzen


----------



## Chrisux1234 (4. Mai 2018)

mrBrown hat gesagt.:


> Warum denn nicht?
> 
> 
> Kannst du wenigstens ein Build-Tool nutzen?
> Per Hand mit Abhängigkeiten zu kompilieren verlangt hoffentlich niemand...



Mein Dozent verlangt das xD Also mit Javac.


----------



## mrBrown (4. Mai 2018)

Lösung steht oben bei, habs grad zu früh abgeschickt...



Chrisux1234 hat gesagt.:


> Mein Dozent verlangt das xD Also mit Javac.



Dann scheint das kein sehr guter Dozent zu sein...sowas ist doch völliger Unsinn, wenn es nicht um die absolute Java-Grundlagen geht


----------



## Chrisux1234 (4. Mai 2018)

mrBrown hat gesagt.:


> Lösung steht oben bei, habs grad zu früh abgeschickt...
> 
> 
> 
> Dann scheint das kein sehr guter Dozent zu sein...sowas ist doch völliger Unsinn, wenn es nicht um die absolute Java-Grundlagen geht


Jap aber verlangt ist halt verlangt :/


----------



## Chrisux1234 (4. Mai 2018)

Danke schonmal ich komme der Sache näher.
Der Javac Befehl scheint jetzt richtig zu sein.

```
javac -classpath "bson-3.7.0.jar:mongodb-driver-3.7.0.jar:mongodb-driver-core-3.7.0.jar" mongodb_connection.java
```

Nur der Java Code macht jetzt Probleme.

```
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.ServerAddress;

import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;

import org.bson.Document;
import java.util.Arrays;
import com.mongodb.Block;

import com.mongodb.client.MongoCursor;
import static com.mongodb.client.model.Filters.*;
import com.mongodb.client.result.DeleteResult;
import static com.mongodb.client.model.Updates.*;
import com.mongodb.client.result.UpdateResult;
import java.util.ArrayList;
import java.util.List;



import java.util.List;
import java.util.Set;



import static java.util.concurrent.TimeUnit.SECONDS;

public class mongodb_connection{

    public static void main( String args[] ){

      System.out.println("Hello World");

/*
You can instantiate a MongoClient object without any parameters to connect to a MongoDB instance running on localhost on port 27017
*/
      try{
          //Connection
      MongoClient mongoClient = new MongoClient("127.0.0.1",27017 );
      //      DB db = mongoClient.getDB("mydb");
        
      }catch(IllegalArgumentException  ie){
          System.err.println(ie.getMessage());
      }

    
    }
}
```

Fehlermeldung:


> java mongodb_connection
> Hello World
> Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/MongoClient
> at mongodb_connection.main(mongodb_connection.java:40)
> ...


Das verzweifelte einfügen von
import java.lang.*;
import java.net.URLClassLoader.*
hat eben auch nicht geholfen :/


----------



## mrBrown (4. Mai 2018)

Wie führst du denn aus?


----------



## fhoffmann (4. Mai 2018)

Du musst auch beim Ausführen den Classpath angeben.


----------



## Chrisux1234 (4. Mai 2018)

Ich liebe euch.


> java -cp .:/home/cseipel/mongo/* mongodb_connection
> Hello World
> Mai 04, 2018 7:38:13 PM com.mongodb.diagnostics.logging.JULLogger log
> INFORMATION: Cluster created with settings {hosts=[127.0.0.1:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}


Endlich kann ich mal anfangen zu programmieren.


----------

