# Javac File generieren Eclipse oder IntellJ (JNI)



## Jamil (29. Jul 2021)

Ich versuche seit gestern morgen intellj und Eclipse soweit zu konfiguieren, dass der Compiler mir eine zusätzliche Javac File generiert. Ich bin mir nicht sicher, ob die gewählten Variablen die Richtigen sind. Hier ein Screen zu den external tool configurations. (x64-basierter Prozessor, Windows, JDK-Version 16)


Im test3 Projekt sollte nach dem Klicken des Run-Buttons m Verzeichnis ,,header" die passende javac file auftauchen. Ich bekomme jedoch folgenden Fehler:


(unter Details wurde nichts weiter beschrieben)

Das normale Starten des Programms führt zu folgenden Fehler:
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'double start.TestNative.multiply(double, double)'
    at start.TestNative.multiply(Native Method)
    at start.TestNative.main(TestNative.java:17)



Spoiler: Hier der Code zum Testprogramm



*


		Java:In die Zwischenablage kopieren


[/B]
package start;

// BeispielProgramm
public class TestNative {
    
    double parameter;
    
    public TestNative(double param) {
        parameter = param;
    }
    public native double multiply(double a, double b);
    public native String speak(); 
    
    public static void main(String[] args) {
        
        TestNative test1 = new TestNative(1.2);
        double result = test1.multiply(1.1, 1.2);
        System.out.println("Result: " + result);
        System.out.println(test1.speak());
    }

}
[B]

*



Hoffe dass ihr mir weiterhelfen könnt


----------



## Jamil (29. Jul 2021)

Spoiler: Fehler2



Hab die Variablen soweit geändert. bekomme nun folgenden Fehler






Fehler2 ist behoben...


----------



## Jamil (29. Jul 2021)

Spoiler: Fehler3 Variable reference emty selection: {resource_path}


----------



## kneitzel (29. Jul 2021)

Das Flag -jni war damals ein Parameter vom javah

Aber das ist ja in javac eingeflossen und da gibt es dieses Flag nicht. Du musst meines Wissens nach nur -h <zielpfad> angeben, damit er die header Dateien baut. (Und natürlich noch die anderen Angaben, die nötig sind!)

Mach den Aufruf doch erst einmal auf der Kommandozeile und wenn er da funktioniert, dann übernimm ihn und erwarte Namen/Ordner durch Variablen wo notwendig.


----------



## Jamil (29. Jul 2021)

Danke für die Antwort. Den check in der Kommandozeile hatte ich nicht mehr auf dem Schirm. Ich hab versucht im Verzeichnis von javac.exe auf die Files im Repository von Eclipse zuzugreifen (mithilfe von -cp)
javac -h (Zielordner in der die Headerfile gespeichert wird) C:\Users\jamil\eclipse-workspace\test3\src\header -cp C:\Users\jamil\eclipse-workspace\test3\src\start\TestNative.java

an dieser Stelle bekomme ich die Fehlermeldung
error no source files
Was aber nicht sein kein...ich bin zu 1000% im richtigen Verzeichnis. Er erkennt aus irgendwelchen Gründen meine source files nicht


----------



## kneitzel (29. Jul 2021)

Was Du setzen musst ist source Directory und das Verzeichnis, in dem die class Files plaziert werden sollen.
Nicht den Classpath (Den nur, wenn Du Weitere Dinge einbinden willst).

Aus javac -help (jdk 16):

```
--source-path <path>, -sourcepath <path>
        Specify where to find input source files
  -d <directory>               Specify where to place generated class files
```


----------



## Jamil (29. Jul 2021)

Danke hat geklappt . jetzt erstmal was essen. hab noch nicht gefrühstückt.


----------



## Jamil (29. Jul 2021)

Ich schau nochmal später wie ich das mit den Argumenten besser ausdrücken kann. Die Variablen gibt es ja nicht ohne Grund


----------

