2016-08-01 24 views
1

ich mit dem folgenden Verzeichnisstruktur ein Maven-Projekt haben:Wo Stub-Klassen in Maven setzen Projekte

. 
└── src  
    ├── main 
    │ └── ... 
    └── test 
      └── java 
       └── com.foo 
         ├── stubs 
         │ └── JsonSnippets.java 
         ├── bar 
         │ └── BarTest.java 
         └── ... further tests 

Die JsonSnippets Klasse sieht wie folgt aus:

package com.foo.stubs; 

public class JsonSnippets { 

    public final static String SNIPPET_A = "{...}"; 

} 

Innerhalb der BarTest Klasse, ich will die JsonSnippets Klasse zu verwenden, deshalb habe ich

package com.foo.bar; 

import com.foo.stubs.JsonSnippets; 

// ... 

@Test 
public void testWithJsonSnippets() { 
    String json = JsonSnippets.SNIPPET_A; 
    // ... 
} 

Wenn ich jetzt mvn test laufen, bekomme ich folgende Fehlermeldung:

cannot find symbol 
[ERROR] symbol: class JsonSnippets 
[ERROR] location: package com.foo.bar 

Bemerkung alles wie erwartet funktioniert, wenn ich die JsonSnippets Klasse in das Paket/Verzeichnis src/main/... setzen.

+0

Ist die Klasse 'JSonSnippets' öffentlich? – uniknow

+0

ja - es wird öffentlich erklärt - ich werde das zu meiner Frage hinzufügen, danke für die Nachfrage! –

+0

Könnten Sie auch die JsonSnippets-Klasse anhängen. – uniknow

Antwort

0

Problem war eine kaputte Maven-Konfiguration im Projektverzeichnis. Nachdem ich alle nicht projektbezogenen Cachedateien entfernt und das Projekt "von Grund auf neu" erstellt habe (mit genau den gleichen Quellen), hat alles wie in meiner Frage beschrieben funktioniert.

0

Überprüfen Sie, ob Sie die JsonSnippet-Klasse ordnungsgemäß importiert haben oder nicht.

Überprüfen Sie, ob die JsonSnippet-Klasse den öffentlichen Konstruktor definiert hat.

+1

Ich denke 'import com.foo.stubs.JsonSnippets;' ist der korrekte Import der Klasse und ich brauche keinen öffentlichen Konstruktor für eine Klasse, die nur statische Mitglieder enthält - habe ich recht? –