Problem mit Eclipse "must be declared as abstract"

Panikmeister

Mitglied
Halle Gemeinde,

immer wenn ich ein Projekt importieren will, sagt Eclipse mir bei JEDER einzelnen Klasse "xxx must be declared as abstract", dabei sind gar keine abstrakten Methoden etc vorhanden.

Das Projekt selbst stammt von der Uni, von daher wird das recht fehlerfrei sein.

Ich muss die Hausaufgabe Montag abgeben, von daher macht sich leichte Verzweiflung bei mir breit^^

Grüße PM
 
Zwei Möglichkeiten:

1. Ich verschiebe den Thread in den Bereich Hausaufgaben weil du nur Lösungen erwartest ohne dich zu bemühen.

2. Du zeigst eingeninitiative und zeigst uns erstmal die Klassen/Interfaces um die es geht, also dort wo der Fehler gezeigt wird.

Hast du den Classpath richtig gesetzt und alle benötigten externen libs darin eingebunden?
 
Nun ja, das ist ja nur ein Fehler und nicht die Hausaufgabe selber. Daher versteh ich deinen Ton nicht so ganz...o.0

Hab den Fehler jetzt gefunden, die Checkstyle Version 5.3 ist fehlerhaft, deswegen Eclipse neugemacht und 5.2 installiert, fertig.
 
Da ich dieses Problem in einem meiner Projekte auch hatte und sicher viele über die Suchmaschine ihres Vertrauens bei diesem Thread auskommen, poste ich hier noch die Lösung die für mich funktioniert hat. (Eclipse 3.7 mit Checkstyle-Plugin 5.3)

In unserer Checkstyle-Konfiguration sind die beiden Module
- TypeName (für Klassen, also "CLASS_DEF" Tokens)
- AbstractClassName
mit dem gleichen RegEx "^[A-Z][a-zA-Z_0-9]{1,34}$" zur Namensprüfung enthalten.

Seit Checkstyle Version 5.3 gibt es im Modul AbstractClassName einen zusätzlichen Check, ob die geprüfte Klasse den Modifier abstract hat (checkstyle - Release Notes). Dieser greift scheinbar auch dann ab und zu (bei mir nicht bei allen Klassen) wenn es eine normale Klasse ist, die eben auch den RegEx für abstrakte Klassen erfüllt.

Um das zu umgehen gibt es folgende Möglichkeit:
In der externen Checkstyle Xml-Konfiguration folgendes ergänzen (rot markiert):

<module name="AbstractClassName">
<property name="severity" value="warning"/>​
<property name="format" value="^[A-Z][a-zA-Z_0-9]{1,34}$"/>​
<property name="ignoreModifier" value="true"/>​
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="warning"/>​
</module>

Leider gibt das aktuelle Eclipse Checkstyle Plugin 5.3 keine Möglichkeit her, diese Property über den Editor zu setzen. Wenn man das AbstractClassName Modul per eclipse-cs editiert, wird die ergänzte Zeile sogar wieder gelöscht da scheinbar das ganze Tag neu generiert wird.
Es gibt dazu einen Feature Request bei eclipse-cs, vielleicht ist es bald ja auch darüber möglich.

Hoffe das erspart einigen die Sucherei im Netz.
 

Neue Themen


Zurück
Oben