| 

.NET C# Java Javascript Exception

duplicate class definition bei "interface x extends y"

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


duplicate class definition bei "interface x extends y"

cpickart - 03.04.2009 17:32
Hallo zusammen,

ich bin relativ neu bei Groovy und weiss nicht, was ich hier falsch mache:

Ich hab folgendes Interface:

interface A {
}
Und ein davon abgeleitetes Interface:

public interface B extends A {
}

Wenn ich beispielsweise in der groovyConsole das Verzeichnis mit A zum Klassenpfad hinzufüge und B direkt in der Konsole als "Script" ausführen lasse,
bekomme ich folgenden Fehler:

groovy> public interface B extends A {
groovy> }

Exception thrown: loader (instance of  groovy/lang/GroovyClassLoader$InnerLoader): attempted  duplicate class definition for name: "A"

java.lang.LinkageError: loader (instance of  groovy/lang/GroovyClassLoader$InnerLoader): attempted  duplicate class definition for name: "A"

Lasse ich das "public" weg, so kommt der erwartete Fehler, dass die main()-Methode fehlt, die Klassen wurden also offenbar erzeugt.
Es spielt übrigens wohl keine Rolle, ob ich A als public definiere oder nicht.

Hat jemand eine Idee, was ich das falsch mache?

Christoph


Re: duplicate class definition bei "interface x extends y"

ArneL - 06.04.2009 15:45
Hi,

ich hab das mal getestet und ein bisschen weiter getrieben^^. Den Fehler kann ich erstmal bestätigen, weiß aber auch nicht, woran das liegt (wirklich Sinn ergibt das eigentlich nicht). Jedenfalls hab ich testweise noch eine Klasse C geschrieben, die B implementiert und den Interfaces A und B noch jeweils testweise eine Methode verpasst. Wenn ich alles in drei verschiedenen Dateien habe, führt ein Versuch, C.groovy auszuführen zum gleichen Fehler wie oben. Packe ich alle drei Deklarationen in eine Datei, erkennt groovy weder die main-Methode, noch den Versuch, C zusätzlich Runnable implementieren zu lassen und eine run-Methode zu definieren.
Zu der Frage der Definition mit 'public': Alle Klassen und Methoden in Groovy, die keinen expliziten Modifier haben, sind implizit public.


Re: duplicate class definition bei "interface x extends y"

cpickart - 06.04.2009 15:52
ArneL schrieb:
-------------------------------------------------------
> Zu der Frage der Definition mit 'public': Alle
> Klassen und Methoden in Groovy, die keinen
> expliziten Modifier haben, sind implizit public.

Stimmt, es lag wohl eher am Cache des ClassLoaders. Das Problem ist irgendwie nur dann zuverlässig reproduzierbar, wenn
die Klassen noch nicht geladen sind.


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "duplicate class definition bei "interface x extends y"" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.