Frage

Ich schrieb einmal diese Zeile in einer Java-Klasse. Dies kompiliert fein in Eclipse, aber nicht auf der Kommandozeile.

Dies ist auf

  • Eclipse-3.3
  • JDK 1.5
  • Windows XP Professional

Irgendwelche Hinweise?

Fehler in der Befehlszeile angegeben sind:

Icons.java:16: code too large
            public static final byte[] compileIcon = { 71, 73, 70, 56, 57, 97, 50,
                                       ^

Die Codezeile in Frage lautet:

public static final byte[] compileIcon = { 71, 73, 70, 56, 57, 97, 50,
            0, 50, 0, -9, 0, 0, -1, -1, -1, -24, -72, -72, -24, -64, -64,
            -8, -16, -24, -8, -24, -24, -16, -24, -32, -1, -8, -8, 48, 72,
            -72, -24, -80, -80, 72, 96, -40, -24, -24, -8, 56, 88, -56,
            -24, -40, -48, -24, -48, -64, 56, 80, -64, 64, 88, -48, -56,
            -64, -64, -16, -24, -24, -32, -40, -40, -32, -88, -96, -72,
            -72, -72, -48, -56, -56, -24, -32, -32, -8, -8, -1, -24, -40,
            -56, -64, -72, -72, -16, -32, -40, 48, 80, -72, -40, -96, -104,
            -40, -96, -96, -56, -104, -104, 120, 88, -104, -40, -64, -80,
            -32, -88, -88, -32, -56, -72, -72, -80, -80, -32, -80, -88,
            104, -96, -1, -40, -40, -40, -64, -104, -104, -32, -56, -64,
            -112, 104, 112, -48, -104, -112, -128, -112, -24, -72, -80,
            -88, -8, -8, -8, -64, -112, -120, 72, 104, -40, 120, 96, -96,
            -112, -96, -24, -112, -120, -72, -40, -88, -88, -48, -64, -72,
            -32, -72, -80, -48, -72, -88, -88, -72, -24, 64, 88, -56, -120,
            96, 104, 88, -128, -72, 48, 56, 56, 104, 104, 120, 112, -120,
            -16, -128, 104, -88, -40, -48, -48, 88, -120, -24, 104, 88,
            -104, -40, -56, -72, -128, 112, -88, -128, 96, -88, -104, -88,
            -24, -96, -120, 120, -88, -128, -80, -56, -56, -64, 96, 120,
            -8, -96, -128, -88, -80, -96, -104, -32, -72, -72, 96, 104,
            112, 96, -104, -8, -72, -112, -112, -64, -72, -80, 64, 64, 72,
            -128, -120, -96, -128, 88, 88, -56, -72, -80, 88, 96, 120, -72,
            -128, 112, 72, 112, -40, 96, 120, -56, 88, -112, -16, 64, 104,
            -48, -64, -80, -88, -88, -120, -80, 88, 88, 96, -56, -96, -120,
            -40, -56, -64, 96, 104, 120, -120, -80, -24, -104, -88, -40,
            -48, -72, -80, -64, -56, -16, -88, -112, -128, -32, -48, -56,
            -24, -16, -8, -64, -120, 120, -96, -96, -88, 80, -128, -24,
            -56, -72, -88, -96, 120, 88, -72, -112, 120, -64, -104, 120,
            -48, -56, -64, -120, -104, -32, -104, 120, -80, -96, -112,
            -120, 56, 88, -64, -128, 96, 64, 88, 120, -40, -80, -104, -120,
            -104, -128, 104, 96, -104, -24, -72, -120, -128, 56, 96, -56,
            -128, 112, 104, -48, -88, -112, 96, 96, 104, -104, -88, -72,
            -40, -88, -96, -72, -88, -96, -120, 120, 104, -80, -88, -96,
            72, 72, 80, -120, 88, 96, 120, -120, -24, 96, -104, -16, 104,
            80, 48, -56, -80, -96, -56, -88, -104, -104, 120, -88, -88,
            120, 104, -72, -120, -120, -24, -32, -40, 112, 88, -104, 120,
            96, -104, -32, -32, -32, -96, 96, 96, 80, 80, 88, 64, 88, 120,
            72, 120, -40, 72, 88, 112, -88, -96, -104, -56, -80, -88, -72,
            -88, -104, -56, -64, -72, -80, -120, 104, -80, -120, -80, -112,
            112, -88, 120, 112, 112, 112, -96, -24, -120, -120, -64, -120,
            120, -80, 64, 96, -128, 96, 64, 64, 96, -128, -32, 80, 112,
            -24, 112, -120, -24, 104, -96, -8, 96, 120, -16, -88, 120, 120,
            -72, -56, -16, -128, -128, -128, -104, -120, -72, -64, -96,
            -120, -32, -64, -64, -40, -48, -56, -64, -88, -96, -64, -104,
            -72, -96, -88, -24, -104, -96, -40, -96, -128, 96, -128, -128,
            -96, 104, 88, 80, 112, -88, -8, -64, -104, -80, -96, -120, 112,
            96, 120, -32, 56, 80, -72, -104, -88, -32, 104, -128, -24, -56,
            -88, -120, -80, -72, -8, -96, -128, -128, -64, -128, 96, -72,
            -96, -120, 72, 104, -32, -96, 96, 64, -72, -96, -112, -32, -40,
            -48, -64, -88, -112, -88, -128, 96, -88, -128, -88, -64, -64,
            -32, -128, -96, -32, -88, -104, -112, 32, 32, 64, -120, 104,
            -88, 120, -120, -16, -104, 120, -72, -24, -48, -56, -96, -96,
            -96, -64, 96, 96, 96, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
            50, 0, 50, 0, 0, 8, -1, 0, 1, 8, 28, 72, -80, -96, -63, -125,
            8, 19, 42, 92, -120, 112, 0, 3, 6, 12, 23, 6, -104, 72, -79,
            -94, -59, -117, 19, 39, -124, 64, -128, -128, 3, -121, 9, 19,
            48, -118, -92, 24, 81, 33, -118, 8, 40, 7, -88, 84, -55, -64,
            12, 6, 6, 45, 74, -54, 52, 8, 73, -60, 24, 22, 25, 92, 73, 40,
            64, -96, -64, 74, -121, 24, 94, -58, -100, 25, -79, -59, 47,
            17, 3, 52, -120, 88, -125, 105, 73, 6, 42, -102, -68, 96, -16,
            -71, 18, 3, -118, 6, 13, 14, -114, -36, 26, -64, 69, 7, 18, 28,
            -61, -110, -32, -32, -62, -54, -94, 72, -61, -48, -88, -40, 72,
            34, -60, 4, 21, 23, -119, 14, -92, 80, -58, 6, -108, 10, 18,
            44, 68, -8, 57, -96, -128, 16, 98, 70, -24, -48, 97, -45, 6, 4,
            6, 16, 67, -27, 18, 52, -79, -52, -89, -46, 49, -105, -74, -32,
            109, -45, -85, -63, -49, 2, 13, 88, -51, -62, 5, 40, 80, 31,
            91, 103, 20, 11, -116, 32, -124, -81, -54, 2, 40, -58, -40,
            -103, -59, -122, 13, 43, 51, 12, 122, 106, 96, -48, 0, -105,
            40, 29, 106, 32, 17, 20, -64, -69, -73, -17, -33, -68, 25, 113,
            13, 80, -125, 44, -102, 72, 108, -84, -88, 80, 49, -127, -61,
            -94, 28, -97, -108, -4, -98, -103, 102, 9, -127, -21, -40, -81,
            23, -32, 35, -126, 39, -10, 2, 32, -116, 29, -1, 27, -74, 37,
            -40, 29, 60, 90, -60, -120, -90, 0, -122, -118, -23, -107, 54,
            -36, -72, -15, 2, 66, -61, -23, -39, 24, -8, -36, -7, -108,
            -27, -128, 44, -59, -112, -16, -64, 67, 3, -39, 21, 72, 0, 6,
            34, 120, -31, -123, 124, 124, 52, 16, 84, 3, -119, -88, 82,
            -62, 28, -2, 21, 4, -36, -123, -83, -92, -96, 97, 13, 20, 117,
            112, 2, -121, 24, 77, -128, 6, 48, -64, 72, -93, -62, 31, 104,
            -56, 48, 68, 16, 65, 112, 49, 29, 67, 82, 8, 24, 72, 118, 18,
            84, 48, 66, 6, 63, 72, 96, 96, 1, 26, -128, 64, -97, 8, 50, 24,
            114, -64, -112, -22, -51, -28, 7, 24, 77, 116, -15, 75, 1, 123,
            53, 2, -63, 15, 22, 88, 0, 1, 5, 44, 72, 32, -127, 74, -78,
            -47, -122, -62, 27, -90, -24, 49, -28, 1, 69, -106, -108, 76,
            21, -99, 8, -127, -119, 29, -81, 60, 41, -63, 15, 16, -116, 80,
            65, -114, 22, -44, 40, 72, 6, 111, 60, 4, 77, 3, 34, -124, 1,
            -60, -105, 7, 40, 96, -31, -123, -68, 49, -111, 66, 30, 32,
            102, -92, 66, 30, 86, 60, -47, -63, 12, 30, 42, 58, 67, 13, 51,
            120, -32, 1, 35, 30, 112, 112, -62, 39, -114, -80, 24, -124,
            116, 47, 30, 116, 6, 15, -120, 24, -104, 93, 3, -105, 44, -79,
            12, 11, -103, -116, 112, 35, 20, 52, -96, 64, 3, 32, 91, -40,
            -1, 114, 5, -97, 126, -106, 36, 5, 24, -106, -67, 103, 26, 3,
            32, -68, -14, 10, 20, 44, 88, -78, -124, 37, 91, -124, -47,
            -33, -105, 112, -56, -28, 7, -103, -70, -86, 116, -57, 29, 52,
            80, 37, -101, 8, 54, 24, 99, -121, 17, 82, -108, -80, 0, -83,
            7, 93, 56, 70, 14, 41, -96, -78, -107, 11, -117, -48, 97, -42,
            12, 127, 32, 64, 66, 91, 19, -96, -88, -94, 35, -16, 110, 10,
            -88, 65, 103, 76, -62, 67, 19, 114, -120, -102, 93, 49, 107,
            -108, 65, -121, 29, -121, -36, 65, -116, 16, 24, -32, 121,
            -125, 33, -70, 108, -96, 112, -97, 37, 5, -127, 100, 23, -128,
            -4, 68, 65, 5, 123, -103, 102, -63, 24, 101, -20, 49, -51, 33,
            -121, -40, 80, 65, 9, 122, 40, -84, 112, -78, 17, 73, 81, 69,
            -110, -110, -28, -38, -105, 9, 84, -30, 69, 21, -106, 60, 106,
            32, 68, 25, -127, -96, -96, -25, 6, 14, 56, -96, 112, -83, 90,
            81, 116, 2, -72, 57, 16, 66, 8, 88, 28, 49, 26, 66, 8, 51, 60,
            -15, -60, 9, 51, -128, -75, -82, 91, 19, 116, 96, -87, 12, 31,
            84, 93, -75, 18, 91, 13, 100, -126, -67, 125, 72, 50, 72, 45,
            63, 89, -112, 1, 5, 20, -104, 96, 65, 1, 38, -4, 48, 49, 4,
            -82, 60, 84, 48, 13, -90, 92, -111, -13, -36, 60, 39, -44, 66,
            40, 96, -12, -47, -59, 32, 81, -20, -1, -15, 19, 4, 18, 68, 80,
            64, 5, 72, -80, 0, -127, 9, 17, 72, -112, 9, 20, -106, -48,
            -48, -86, -79, 56, -49, 77, -14, 66, -76, -100, -68, 119, 20,
            59, 44, -15, 19, -53, 20, 0, 30, 103, -101, 110, -66, 97, -122,
            25, 52, 44, 33, -125, -74, 11, -92, -98, 115, -35, 90, -55, 1,
            52, 33, 83, 76, 33, -118, 10, 97, 73, -70, 81, 7, 29, 44, -35,
            1, -46, 29, 76, -22, 2, 7, 30, -84, 50, -60, 7, 48, 60, 114,
            -11, 112, 0, -124, -95, 67, 21, -110, 96, -66, -61, 14, 12,
            -84, 36, -27, 8, -99, -101, 80, -128, 5, 72, -36, -104, -55,
            23, -92, 83, -95, -116, 19, 14, -92, 46, 62, -21, 8, 21, 1, 68,
            9, -93, -124, -78, 3, 51, 59, -68, -84, 82, -30, 72, 84, 64, 1,
            18, 121, 85, 0, -123, 32, -126, -80, -112, 6, -56, 11, -32, 32,
            -2, -28, 10, -71, -64, 5, -80, 48, 7, 74, 56, -63, 16, 58, -40,
            65, 45, -28, -16, 5, -108, 56, 16, 37, -112, -80, 17, 5, 70,
            -16, 6, 87, 124, -127, 5, -98, 0, -126, 3, 30, -128, -125, 14,
            -30, 64, 1, 2, 12, -95, 8, 67, 8, 0, -118, 108, -126, 8, 31,
            -16, 1, 40, 100, -96, -120, 20, 76, 33, 18, 121, -104, 64, 88,
            102, 24, 2, -78, 48, 66, 5, -101, -96, 26, 12, 118, -72, 67,
            100, 12, 103, 34, 4, 89, 65, 18, -1, 72, -127, -125, 2, 30, 80,
            7, -107, -24, -37, 22, 26, -15, -66, 2, 20, -96, 17, 12, 64,
            65, 52, -30, -74, -128, 7, 88, -47, -118, -28, 99, -120, 2,
            122, -112, -124, 36, -100, 34, 1, 14, -48, -126, 26, 74, -128,
            -121, 80, 68, 33, 10, -127, -80, -127, 6, 98, -122, 1, 42, 120,
            34, 11, 27, -72, -94, 21, 1, 56, 19, 50, 116, -47, -117, -89,
            32, -59, 3, 28, 112, 5, 39, -108, 0, -119, 81, 16, -123, 17,
            108, 96, 6, 42, -8, 65, 91, 15, 72, -128, 28, -77, -120, 16,
            -116, -64, -30, 25, 113, -120, 100, 36, -101, -15, 8, 24, -84,
            80, 6, 46, -116, 93, 36, -124, -9, 1, 34, 120, -46, -109, 71,
            -8, 33, 73, 16, 66, -122, 21, -12, -32, -108, 61, 40, 5, 47,
            18, 48, -121, 62, -2, 113, 18, 58, 112, -62, 6, 18, 64, -53,
            90, 50, 82, 49, 10, 40, -62, 41, 11, -63, 75, 94, -68, 32, 117,
            106, -16, -93, 30, 18, 89, -53, 4, -60, 64, 52, 10, 81, -128,
            47, 86, -64, 76, 102, -106, 34, 23, 47, -48, -126, 22, 28, 80,
            76, 90, -34, 82, 32, 6, -56, -90, 54, 69, 25, 0, 38, -64, -126,
            11, 71, 8, -89, 56, -107, -96, 8, 31, -104, -45, 7, 68, -32, 2,
            55, -127, 72, -108, 11, -112, -95, 8, 49, -120, -89, 60, 71,
            -15, -126, 122, 38, -32, -102, -56, 60, -120, 2, 110, 80, 51,
            -124, 126, -58, -94, 8, -62, -88, -25, 49, -13, 41, 23, 5,
            -112, -31, 6, 8, 93, 65, 64, -15, -39, -56, 117, 98, -124, 9,
            51, -72, -59, 45, 56, -95, 78, -121, 6, -128, -96, 5, -39, 39,
            67, 49, -54, -47, -114, 122, -44, 32, 1, 1, 0, 59 };
War es hilfreich?

Lösung

Unter diesem Forum auf dem Sun-Support-Website , kein Verfahren kann mehr als 64 KB lang sein:

Wenn Sie Code (Pseudo) wie folgt aus ...

class MyClass
{
  private String[] s = { "a", "b", "c"}

  public MyClass()
  {
  }

Der Compiler endet Code erzeugen, die im Grunde wie folgt aussieht.

class MyClass
{
  private String[] s;

  private void FunnyName$Method()
  {
    s[0] = "a";
    s[1] = "b";
    s[2] = "c";
  }
  public MyClass()
  {
    FunnyName$Method();
  }

Und wie bereits erwähnt Java begrenzt alle Methoden zu 64k, auch die, die der Compiler erstellt.

Es kann sein, dass Eclipse-etwas hinterhältig, dies zu umgehen tut, aber ich versichere Ihnen, dies noch möglich in Eclipse ist, weil ich die gleiche Fehlermeldung gesehen haben. Eine bessere Lösung ist es, nur aus einer statischen Datei zu lesen, wie folgt aus:

public class Icons
{
  public static final byte[] compileIcon;
  static
  {
    compileIcon = readFileToBytes("compileIcon.gif");
  }
  //... (I assume there are several other icons)
  private static byte[] readFileToBytes(String filename)
  {
    try {
      File file = new File(filename);
      byte[] bytes = new byte[(int)file.length()];
      FileInputStream fin = new FileInputStream(file);
      fin.read(bytes);
      fin.close();
    }
    catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
}

Andere Tipps

Was haben Sie scheint zu kompilieren.

Wenn möglich, würde ich vorschlagen, versuchen, die Ressource in den Jar einbetten und mit     ClassLoader.getResourceAsStream ().

Eclipse-hat einen eigenen Compiler ist. Die Eclipse JDT Compiler scheint als javac Array unterschiedlich zu behandeln.

Schwer zu sagen, warum Sie Befehlszeile Kompilierungsfehlern haben, aber ...

Da Sie eine Menge von „magischen Zahlen“ haben, kann es eine bessere Lösung als hartzucodieren eine Arrayliteral.

Betrachten

  • Mit einem statischen Initialisierungsblocks eine Liste
  • initialisieren
  • Geben Sie eine XML-Datei zu lesen, die Ihre Zahlen haben, und mit Ihrer Klasse, die die XML liest den Datentyp Sie wollen zurückkehren (sei es eine Liste oder byte []

Die Bereitstellung der genaue Fehlermeldung würde uns helfen, Ihnen zu helfen ...
Und ich frage mich, warum Sie hart Code ein Bild (Symbol) in der Quelle, statt irgendeine Form der Ressource verwendet wird.

Hard aus zu sagen, was zur Verfügung gestellt wird, aber Vermutungen sind

  1. Verschiedene JVM in Eclipse als Kommandozeile.
  2. Bad Classpath Einstellungen in der Befehlszeile.

Was ist die Kompilierung Fehlermeldung?

Können Sie isolieren das Problem in einer Dummy-Klasse für die Demonstration?

Wenn Sie auf Fenster schreiben

  

set JAVA_HOME = C: \ Program Files .... Pfad zu JDK   der Weg sollte der jdk Pfad nicht jre   auf meinem PC ist C: \ Programme \ Java \ jdk1.6.0_07

ACHTUNG: : sollte der Pfad NICHT VON ZITATE NICHT umgeben sein ( ") CMDs Vervollständigungen legt sie

auf Unix-ähnlichen Systemen verwenden

  

export JAVA_HOME = Pfad JDK (zitiert werden toleriert)

Sind Sie sicher, dass Ihre Kommandozeile und Eclipse verwenden dieselbe Version von Java-Compiler und gleicher Kompilierung Einstellung? Zu finden, welche Version von Java Sie in der Befehlszeile Typ verwenden: Java -Version

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top