nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden

Senifor

Mitglied
Hallo zusammen,

ich habe in ein Projekt eine neue Jar eingebunden und ein bisschen Code geändert. Es handelt sich um die jars für PLC4x. In Eclipse hab ich diese auch in den Build Path eingebunden. Soweit so gut.

Jetzt kann ich das Projekt aber nicht mehr compilieren, weil in einer ganz anderen Datei, die damit gar nichts zu tun hat, Fehler auftreten.

Dort wurde eingebunden u.a.
Java:
import net.lingala.zip4j.exception.ZipException;
Die IDE meckert das auch nicht an.

Aber weiter unten, wo die ZipException verwendet wird, steht folgendes:

Java:
} catch (IOException | ZipException | MessageException e) {

Die Fehlerausgabe ist:

Code:
Alternatives in a multi-catch statement cannot be related by subclassing

Jetzt hab ich herausgefunden, dass an dieser Stelle java.util.zip.ZipException verwendet wird, obwohl das so nicht importiert wird.

Jetzt bin ich natürlich etwas verwirrt. Selbst wenn ich die Zeile ändere in:

Java:
} catch (IOException | net.lingala.zip4j.exception.ZipException | MessageException e) {

kann ich nicht kompilieren.

Kann mir jemand einen Hinweis geben, was ich falsch mache ?

Danke und viele Grüße.
 
Die Fehlermeldung besagt es doch schon: Von den 3 angegebenen Exceptions ist eine eine Unterklasse von einer anderen. Also erbt vermutlich entweder die ZipException oder die MessageException von IOException.

Damit ist eine Exception von dieser Exception auch eine IOException und das angeben macht keinen Sinn.

Also einfach mal die ZipException heraus nehmen und schauen, ob es dann geht. Wenn nicht, dann ZipException wieder rein nehmen und die MessageException heraus nehmen.
 
Hallo,

danke für die Antwort. Aber das trifft nicht ganz das Problem.

Java:
catch (IOException | net.lingala.zip4j.exception.ZipException | MessageException e) {

net.lingala.zip4j.exception.ZipException erbt von Exception
java.util.zip.ZipException erbt von IOException

Ich habe aber oben nur net.lingala.zip4j.exception.ZipException importiert und genau diese möchte ich auch verwenden.

Er scheint dort an der Stelle aber aus irgendwelchen Gründen java.util.zip.ZipException zu nehmen, weshalb der Fehler kommt, da diese von IOException erbt.
 
Hallo,

ich hab es mal auf der Cli übersetzt, dort das gleiche Problem.


Code:
.java:197: error: Alternatives in a multi-catch statement cannot be related by subclassing
    [javac]                 } catch (IOException | ZipException e) {
    [javac]                                        ^
    [javac]   Alternative ZipException is a subclass of alternative IOException
    [javac] .java:1875: error: cannot find symbol
    [javac]                     lastModified = Zip4jUtil.dosToJavaTme(fh.getLastModFileTime());
    [javac]                                                             ^
    [javac]   symbol:   method getLastModFileTime()
    [javac]   location: variable fh of type FileHeader
    [javac] java:1973: error: Alternatives in a multi-catch statement cannot be related by subclassing
    [javac]         } catch (IOException | ZipException e) {
    [javac]                                ^
    [javac]   Alternative ZipException is a subclass of alternative IOException
    [javac] .java:2713: error: incompatible types: int cannot be converted to CompressionMethod
    [javac]                 zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
    [javac]                                                                  ^
    [javac] .java:2714: error: incompatible types: int cannot be converted to CompressionLevel
    [javac]                 zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
    [javac]                                                                 ^
    [javac] .java:2715: error: incompatible types: int cannot be converted to EncryptionMethod
    [javac]                 zipParameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
    [javac]                                                                 ^
    [javac] .java:2717: error: cannot find symbol
    [javac]                 zipParameters.setSourceExternalStream(true);
    [javac]                              ^
    [javac]   symbol:   method setSourceExternalStream(boolean)
    [javac]   location: variable zipParameters of type ZipParameters
    [javac] .java:2718: error: cannot find symbol
    [javac]                 zipParameters.setPassword(password);
    [javac]                              ^
    [javac]   symbol:   method setPassword(String)
    [javac]   location: variable zipParameters of type ZipParameters
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.
    [javac] Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
    [javac] 14 errors
    [javac] 8 warnings

Irgendwie hat er ein Problem mit der zip4j-1.3.2.jar, die aber definitiv im library - Verzeichnis liegt, dass geladen wird.
 
Ich habe das Problem gefunden. In einer von mir eingebundenen PLC-bibliothek wird eine andere Version der Zip-Lib bereitgestellt. Das hatte ich nicht gesehen.
 

Zurück
Oben