Zum Inhalt springen

ksg9-sebastian

Mitglieder
  • Gesamte Inhalte

    176
  • Benutzer seit

  • Letzter Besuch

Beiträge von ksg9-sebastian

  1. Dafür gibt es Hunderte von Möglichkeiten.

    Die bekanntesten sind wohl:

    - Produkt durchsucht ein Verzeichnis nach Plugins, z.B. im JAR-Format und erzeugt diese (per Reflection)

    - Plugins werden in einer (XML-)Datei des Produkts registriert

    - Produkt bietet einen Pluginmanager welcher es erlaubt Plugins zu installieren

    Du musst unterscheiden zwischen Abhängigkeiten zur Compilezeit (Buildpath) und Abhängigkeiten zur Laufzeit.

    Mit einem normalen Java SDK/JRE (kein OSGi) gibt es zur Laufzeit keine Definitionen von Abhängigkeiten. Zur Laufzeit sind auch keine Produkte oder Projekte bekannt. Da gibt es nur einen Classpath. Alles was in dem Classpath ist kann referenziert werden.

    Der Grund warum eine IDE meckert ist logisch:

    Wenn A von B abhängt und B von A dann kann nicht gebaut werden denn:

    -Um A zu kompilieren werden die Class-Dateien von B benötigt

    -Um B zu kompilieren werden die Class-Dateien von A benötigt

    Und da wäre der Kreis wieder :)

    Es macht auch keinen Sinn dass das Produkt seine Plugins kennt, sonst wären es ja keine Plugins. Dadurch hättest du die Abhängigkeit ja so gebaut das für ein neues Plugin jedesmal eine Änderung im Produkt notwendig wäre.

  2. Sorry, aber wenn ich das lese stellen sich mir die Nackenhaare auf.

    Nach 6 Wochen stellst du fest das die Projekte nichts für dich sind?

    Hast du im Vorstellungsgespräch geschlafen? Oder hast du mit dem Personalchef über das schöne Wetter vom letzten Sonntag gesprochen? Aufgabengebiete sollten Teil des Gesprächs sein - und im Zweifel ist es deine Aufgabe sowas zu erfragen.

    Ich geh doch nicht zu einem Arbeitgeber und hab keinen blassen Schimmer was der wie macht.

    Du musst öfters mal von 9-19Uhr arbeiten? Gut, gewöhn dich gleich mal dran, so ist das in der Branche. Sei lieber froh dass du soviel Arbeit hast dass du 10Stunden arbeiten darfst. Andere wären froh wenn sie 30 Stunden pro Woche arbeiten dürften.

    Du arbeitest ab und zu zu Hause weiter? Schön, ich arbeite ca. 50-60 Stunden pro Woche im Büro und weitere 15 Stunden von zu Hause.

    Und wenn du mit den Leuten in der Firma so gut reden kannst: Warum sprichst du dann nicht über deine Aufgaben? Vielleicht könnte man da ja was ändern?

    Und in der Probezeit Urlaub zu wollen um für die neue Firme etwas vorzubereiten - wow, das ist der Gipfel der Unverfrorenheit.

    Gruß von jemand der froh ist so viel Arbeit und herausfordernde, schwierige Projekte zu haben, welche einen auch mal an die eigene Leistungsgrenze führen

  3. Wenn die Anwendung langsam ist dann optimiert die Anwendung.

    Am Compiler zu spielen bringt keinen Erfolg - da wird nur am Symptom rumgedoktort, das Problem bleibt jedoch bestehen.

    Wir betreiben auch ne Anwendung auf ca. 120000 Clients welche ziemlich sicher deutlich größer und mächtiger ist als euer ERP-System, und das Ding läuft sehr performant ohne dass wir am GC gedreht haben.

    Wenn du dich in Java nicht auskennst dann lass gleich die Finger davon.

    Eine Analyse was langsam ist wäre auch sehr hilfreich. Mit VisualVM/JConsole findet man die Problemstellen nicht, man erkennt nur dass z.B. der Heap oder PermGen immer voll ist.

    Nimm mal einen Profiler und schau dir an wo es hakt.

  4. Du musst die java-exe sozusagen aus dem Package-Root ausrufen.

    Verzeichnisstruktur:

    D:
    
     -> Test
    
        -> build
    
           -> classes
    
              -> de
    
                 -> test
    
                   -> MeineKlasse

    Aufruf

    d:

    cd Test\build\classes

    java de.test.MeineKlasse

    de.test.MeineKlasse wird dann "umgewandelt" und der Aufruf findet in de/test/MeineKlasse statt.

    Trotzdem sind die Punkte wichtig. Mit "/" o.ä. funktioniert es nicht (!).

    Wenn -cp oder -classpath verwendet wird dann wird der Wert der Umgebungsvariable CLASSPATH nicht (!) verwendet.

    Bei der Verwendung von -jar wird der "User-Classpath" ebenfalls ignoriert (!).

    Die sinnvollste Lösung ist wohl den Classpath innerhalb der MANIFEST-Datei denes Jar-Files zu referenzieren.

    Struktur:

    1. mein-jar-mit-main.jar

    2. lib/tools1.jar

    3. lib/tools2.jar

    Manifest wäre dann

    Mainclass....

    Class-Path: lib/tools1.jar lib/tools2.jar

    "Root" ist immer der Ort an dem die Jar liegt welche aufgerufen wird.

    Gruß Sebastian

  5. Variante 1:

    
    char[] str = myString.toCharArray();
    
    char[] newStr = new char[str.length];
    
    
    int count = 0;
    
    for(int i=arr.length-1; i>=0; i--){
    
       newStr[count++] = str[i];
    
    }
    
    
    oder für die ganz faulen:
    
    // myString ist der String den du umdrehen willst
    
    
    char[] strReverse = (char[]) Collections.reverse(Arrays.asList(myString.toCharArray())).toArray(new Character[strArray.length]);
    
    
    

    Variante 2 tut so:

    - String in char-Array umwandeln (Arrays.asList())

    - Liste umdrehen (Collections.reverse())

    - Liste in Array umwandeln (.toArray())

  6. Foren sind für allgemeine Diskussionen und spezifische Probleme.

    Foren sind nicht dazu da um allgemeine Informationen tausendfach zu duplizierern.

    Zudem gibt es auch hier im Forum viele Themen zum MVC-Pattern.

  7. Hast du das erste Jahr in der Schule net aufgepasst oder ist der Lehrer Schuld dass du es net verstehst? Ist bestimmt ein ganz fauler Lehrer der einem nix beibringen kann, und die Zeit ist ja eh so knapp, oder?

    Und "die Aufgabe" will sicher net dass du einfach irgendwie mehrer Klassen machst. Dort geht es wohl eher um sinnvolle Trennung von GUI, Daten und Logik.

    Und das nennt sich MVC und ergibt sicher 1000000 Treffer bei Google bei denen alle erklärt wird..

  8. Es kommt mir langsam vor wie ein Fluch..

    Uls unsereins angefangen hat Java zu programmieren hieß es erstmal 1-3 Jahre Grundlagen pauken (Syntax, Packages, Objektorientierung, Design Patterns, Analyse & Design, UML u.s.w.).

    Wir haben tausende von Mini-Anwendungen gebaut welche nur per Eingeaufforderung aufgebaut haben.

    Irgendwann mal gings mit UI los - genauso: Grundlagen, Grundlagen, Grundlagen.

    Und iiirgendwann kamen auch mal Datenbanken.

    Mittlerweile hat sich das irgendwie geändert:

    Zuerst baut man ne Anwendung mit Datenbankanbindung (möglichst noch Hibernate, damit es auch sicher nicht funktioniert), minimum Swing-GUI, eher aber JEE - z.B: JSF. Was natürlich nicht fehlen darf ist Spring, die Wunderwaffe schlechthin. Weil das aber noch nicht reicht werden noch diverseste Frameworks reingebaut welche man mal gehört hat...Ajax ist auch immer dabei - super.

    Und dann kommt die große Verwunderung: Es tut nicht - oh Wunder.

    Leider kann niemand den Fehler finden weil der Code aussieht (und meist auch so entstanden ist) als hätte man alles nur wahrlos zusammekopiert, leider aber keine Ahnung vom Programmieren.

    Meine Lehrer und Ausbildungsverantwortlichen hätten mir damals den Kopf abgerissen wenn ich ne Anwendung vorgelegt hätte mit einer Klasse welche 2000 Lines of Code hat, darin verbaut auch noch GUI, Model, Controller und selbstverständlich noch Datenbankanbindung.

    Kurzum: Lern erstmal die Grundlagen.

    Und bitte kein "Aber unser Lehrer ist so schlecht und wir haben keine Zeit". Das ist die wohl blödeste Ausrede überhaupt...

    Bring erstmal Struktur in die Anwendung. Lager die Datenbank-Logik aus.

    Bau entsprechende Objekte und befülle die aus der Datenbank.

    Und nein, ein 2dimensionales Objekt-Array ist NICHT ziel der Objektorientierung.

    Und dann ließ dir viele Tutorials zur JTabel und nem eigenen TabelModel durch.

    Und dann kopier noch viel Code irgendwoher, frag noch 200x warum dein Programm nicht geht und DANN stellst du irgendwann fest dass du Grundlagen lernen solltest!

  9. Offensive Anti-Rechtsschreibung?

    Ich blick nimmer was du willst und war nicht funktioniert.

    Wenn du per SQL auf "null" prüfen willst musst du in aller Regel so Abfragen:

    
    select * from tabelle where feld is null
    
    
    Viele Datenbanken mögen es nicht wenn man Strings mit = abfrägt, deshalb
    
    select * from tabelle where feld like 'text';
    
    

    Auch auf das einzelne Hochkammata achten!

  10. Ok, nochmal:

    Dieser Code:

    
    if (jTextFieldVorname.getText() == null && jTextFieldName.getText() == jTextFieldName.getText())
    
    {
    
    String data[][] = myBox.queryAccess("SELECT * FROM KlientTab WHERE (Name = '" + jTextFieldName.getText() + "')");
    
    
    
    //------------FELDAUSGABE----------------------
    
    jTextFieldName.setText(data[0][0]);
    
    jTextFieldVorname.setText(data[0][1]);
    
    jTextFieldGebDat.setText(data[0][2]);
    
    jTextFieldAlter.setText(data[0][3]);
    
    jTextFieldAdresse.setText(data[0][4]);
    
    jTextFieldHaus.setText(data[0][5]);
    
    jTextFieldHandy.setText(data[0][6]);
    
    jTextPaneNotitz.setText(data[0][7]);
    
    jTextAreaStatus.setText("Datensatz gefunden");
    
    
    }
    
    
    wird nie ausgeführt, weil jTextField.getText() == jTextField.getText() immer false liefert! Mach das draus:
    
    if (jTextFieldVorname.getText() == null){
    
    ...
    
    }
    
    

    und es geht..

  11. Schreibst du den Code eigentlich selbst oder kopierst du das zusammen?

    Hast du ne Ahnung von dem was du da tust?

    Alleine schon die If-Bedingung:

    
    f (jTextFieldVorname.getText() == null && [b]jTextFieldName.getText() == jTextFieldName.getText()[/b])
    
    

    Mal abgesehen davon dass die Abfrage quark ist vergleicht man Strings mit "equals" und nicht mit "==". Mit "==" machst du nen Referenzenvergleich - was in dem Fall falsch ist.

    JTextComponent#getText() holt den Text anhand der Methode getDocument()#getText(start, end) - und die Methode liefert jedesmal ein neues String-Objekt zurück.

    Und somit liefert die Bedingung immer false.

    Und, mal davon abgesehen, hat die Abfrage null Sinn. Was willst du damit prüfen?

    Ob zwischen dem ersten Aufruf von getText() und dem zweiten Aufruf von getText() der Benutzer etwas geändert hat? Falls du das denkst dann solltest du mit Datenbankprogrammierung aufhören und nochmal gaaaaaanz von vorne anfange.

    So, dann weiter:

    1) Glaskugel ist in Reparatur, deshalb kann ich dir nicht sagen warum keine Daten ankommen

    2) Was ist myBox ?

    3) Was macht die Methode "myBox#queryAccess" ?

    4) Warum kommt als Ergebnis ein 2-dimensionales StringArray?

    5) Was passiert wenn du den SQL-Befehl in MS Access direkt ausführst?

    (MS Access starten -> Datenbank öffnen -> Abfragen -> Neue Abfrage -> Das Fenster wegklicken -> Ansicht/SQL-Ansicht auswählen)

    6) Was genau willst du eigentlich machen?

    Eingegeben wird Vorname + Nachname, und was willst du nun haben?

    Alle Sätze bei denen

    a) vorname = Eingabe Vorname und nachname = Eingabe Nachname

    B) ??

  12. Wenn du die Möglichkeit hast den SCJP zu machen dann auf geht's! Schaden tut es sicherlich nicht.

    Allerdings sind die Inhalte teilweise sehr fragwürdig, manche Teile sind aber auch ganz schön heftig. Grade Multithreading wird unter Umständen sehr gestresst und da gibts schon ordentliche Aufgaben.

    Ich hab den SCJP auch gemacht, aber nur weil ich jetzt dann den SCJD mache und evtl., soferns irgendwie passt, den Enterprise Architect.

    Aber nur der SCJP wird dir glaub keinen allzugroßen Bonus bei der Jobsuche verschaffen.

  13. 1. Code-Tags

    2. Poste mal den Code, kein halb-Pseudocoe

    3. Poste den ganzen Stacktrace

    "Entity not managed" sagt normal aus dass dieses Objekt dem EntityManager noch nicht bekannt gemacht wurde.

    Es gibt 3 States:

    - Managed: EntityManager kennt das Objekt

    - Detached: EntityManager kannte das Objekt, wurde aber aus dem EM "entfernt"

    - Unmanaged: EntityManager kennt das Objekt nicht, z.B. wenn du "new ..." machst

    Wenn ich deinen Pseudocode halbwegs verstehen würd wär's die Lösung wohl einfacher.

    Ich tippe mal auf folgenden Sachverhalt:

    Schritt 1: Objekte laden

    Schritt 2: EntityManager schließen

    Schritt 3: Objekte ändern

    Schritt 4: Objekt updaten

    Wenn du das tun willst dann machs so:

    
    entityManager.getTransaction().begin();
    
    
    for(MeinEntity e : entities()){
    
       entityManager.merge(e);
    
    }
    
    
    entityManager.getTransaction().commit();
    
    
    
    

  14. 3 dynamische Buttons? Was ist denn das? Entweder es sind 3 Buttons oder beliebig viele (dynamisch!). Und versuch mal bitte etwas besser zu beschreiben was du für ein Problem hast.

    Willst du sowas machen wie

    Frame zum Anmelden -> "Login" klicken -> Neues Frame welches die Anmeldung kennt ?

    Falls ja dann einfach auf den Button nen ActionListener packen, bei der Ausführung dann validieren, das neue Frame öffnen und z.B. im Konstruktor die Anmeldedaten übergeben.

    Und am besten: Java, OOP, OAD u.s.w. lernen!!

  15. ID3v1

    http://de.wikipedia.org/wiki/ID3-Tag#ID3v1" data-cite="\"

    http://de.wikipedia.org/wiki/ID3-Tag#ID3v1

    ">

    Mit einer Wahrscheinlichkeit von 1:224 ≈ 0,000006 % beginnt ein normaler Datenblock in einem MP3-Datenstrom mit den drei Bytes „TAG“ und würde somit fälschlich als ID3v1-Block identifiziert. Eine mehr oder weniger sichere Lösung für dieses Identifikationsproblem besteht beispielsweise darin, die MP3 Datei nicht von vorne zu durchsuchen, sondern vom Dateiende her, indem man 128 Bytes rückwärts springt und dort wieder vorwärtslesend die „TAG“-Marke sucht. Eine 100%ige Sicherheit gibt es aber auch hierfür nicht. Der Zeichensatz für die Textfelder ist nicht spezifiziert. Üblich sind ASCII, ISO 8859-1 und Unicode im UTF-8-Format. Dadurch kann es auch hier zu Fehlinterpretationen bei Umlauten und Sonderzeichen kommen.

    Das Genre des Titels wird als 1 Byte kodiert. Es existiert eine Liste, die angibt, welcher Wert welchem Genre entspricht.

    ID3v1

    http://de.wikipedia.org/wiki/ID3-Tag#ID3v1.1" data-cite="\"

    http://de.wikipedia.org/wiki/ID3-Tag#ID3v1

    .1">

    Eine Weiterentwicklung des ID3v1-Standards gestaltete sich schwierig, da die vorhandenen Felder bereits starr vorgegeben waren. Allerdings gelang Michael Mutschler eine Erweiterung zu ID3v1.1. Hierfür wurde das Kommentarfeld von 30 auf 28 Byte gekürzt. Darauf folgt ein Byte, das 0 als Belegung enthält. Damit wird sichergestellt, dass alle ID3-Reader mit der Auswertung der Zeichenketten aufhören. Das freigewordene Byte an Position 126 bekam die Bedeutung Titelnummer.

    ID3v2

    http://de.wikipedia.org/wiki/ID3-Tag#ID3v2" data-cite="\"

    http://de.wikipedia.org/wiki/ID3-Tag#ID3v2

    ">

    Obwohl ID3v1 ein großer Erfolg war, weist das Format zahlreiche Schwächen auf, u. A.:

    * Eine Begrenzung der Länge der Datenfelder auf weniger als 30 Zeichen, was insbesondere bei Titel und Album eine starke Einschränkung darstellt,

    * fehlende Aussage über die Zeichenkodierung des Texts,

    * keine Möglichkeit, ID3-Tags zu streamen, da die Kennung am Ende der Datei liegt, die ID3-Datenstruktur mithin an (seekbare) Dateien gebunden ist, aber nicht in Datenströme eingeflochten werden kann und

    * zu wenige Metadatenfelder

    Deshalb wurde 1998 von Martin Nilsson und anderen ein neues Format entworfen, das den Namen ID3v2 erhielt. Die Zusatzinformationen werden dabei in einem Block vor oder seit ID3v2.4 möglich auch nach den Audiodaten (dem MPEG-Stream) in die Datei eingefügt. Den Beginn eines ID3-Blockes erkennt man am Header (Version ID3v2):

    Identifizierung "ID3" Version $04 00 (Major Release, dann Minor Release).

    Aktuell (Stand: September 2004) ist die Version 4.0 vom 1. November 2000, auch als ID3v2.4.0 bekannt.

    ID3v2-Tags können so kodiert werden, dass Player, die ID3v2 nicht verstehen, diese Tags überspringen und nicht versuchen, sie als Audiodaten zu interpretieren.

    u.s.w.

    ...einfach nachlesen..es gibt sogar genügend Beispielimplementierungen in Java...

  16. Wie Vanatic schon geschrieben hat:

    Lies dir mal die Spezifkation zu dem ID3Tag in der entsprechenden Version durch.

    Die Tags werden meistens an einer gewissen Stelle in der Datei abgelegt. Bei einer Version steht der ID3-Tag immer in den letzten 128Bytes.

    Die ganze Datei zu durchsuchen ist nicht gut. :)

  17. Wenn du schon bei Grundlagen bist:

    
    public boolean[] controlXML(File pPatch, File zip,boolean[] bZipOK,Logger mLog){
    
    
    Warum übergibst du nen Logger? Logger werden in Normalfall entweder static final deklariert:
    
    class TestKlasse{
    
       private static final Logger LOGGER = Logger.getLogger(TestKlasse.class);
    
    }
    
    
    oder über statische Methoden gekapselt
    
    class Logger{
    
       public static void info(Class caller, Strng message){
    
          Logger.getLogger(caller).info(message);
    
       }
    
    }
    
    

    Aber einen Logger per Parameter zu übergeben tut man nicht!

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...