IntelliJ: importiertes Package wird nicht gefunden?

Hallo,

ich habe ein kleines Test-Projekt in IntelliJ erstellt. Dazu habe ich über Project Structure -> Libraries -> Maven eine Bibliothek eingebunden. Diese finde ich auch als jar-Datei links im lib-Ordner. Will ich das Programm ausführen, erhalte ich den Compiler-Fehler, dass die von mir benutzen Packages nicht gefunden wurden.

Compiler-Ausgabe:

18:37:49: Executing task 'Main.main()'...
> Task :compileJava FAILED
C:[gekürzt]\src\main\java\Main.java:1: error: package org.firmata4j does not exist
import org.firmata4j.IODevice;
          ^
C:[gekürzt]\src\main\java\Main.java:2: error: package org.firmata4j.firmata does not exist
import org.firmata4j.firmata.FirmataDevice;
              ^
C:[gekürzt]\src\main\java\Main.java:12: error: cannot find symbol
    IODevice device = new FirmataDevice("COM3"); // using the name of a port
    ^
 symbol:  class IODevice
 location: class Main
C:[gekürzt]\src\main\java\Main.java:12: error: cannot find symbol
    IODevice device = new FirmataDevice("COM3"); // using the name of a port
               ^
 symbol:  class FirmataDevice
 location: class Main
4 errors
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
1 actionable task: 1 executed
Compilation failed; see the compiler error output for details.
18:37:52: Task execution finished 'Main.main()'.

_____________________________________________________________________________

Warum gibt erst der Compiler den Fehler aus, dass die Packages - warum auch immer - nicht gefunden werden konnten und nicht schon IntelliJ selbst?

Mein Java-Code:

import org.firmata4j.IODevice;
import org.firmata4j.firmata.FirmataDevice;
import java.io.IOException;

public class Main {
  public static void main(String[] args) throws IOException, InterruptedException {
    System.out.println("Moinsen!");

    IODevice device = new FirmataDevice("COM3"); // using the name of a port
    device.start(); // initiate communication to the device
    device.ensureInitializationIsDone(); // wait for initialization is done
  }
}
PC, Computer, Technik, programmieren, Java, IntelliJ IDEA
BlueJ/ Java/ GLOOP Hilfe?

Hallo,

ich muss für die Schule ein Würfelspiel programmieren dazu habe ich mit BlueJ und GLOOP 2 Würfel die mit jeweils 6 Quadern zusammengebaut sind modelliert.

Meine Frage ist jetzt: Wie kann ich wenn eine bestimmte Taste gedrückt wird, die Objekte auf eine zufällige Seite drehen (wie beim würfeln) sodass die 6 Quader immer noch ein Würfel ergeben?

Den Code den ich bisher habe:

import GLOOP.*;

class Würfelspiel{
    GLTastatur tastatur;
    GLSchwenkkamera cam;
    GLLicht spot , spotoben;
    
    GLQuader links, rechts, vorne, hinten, oben, unten;
    GLQuader left, right, front, back, up, down;
    
    GLQuader tisch;
    GLQuader eins, zwei, drei, vier;
    
    Würfelspiel(){
        cam = new GLSchwenkkamera(500, 500);
        spot = new GLLicht();
        spotoben = new GLLicht(0,0,-500);
        tastatur = new GLTastatur();
    
        tisch = new GLQuader(0,0,0,900,10,900);
        
        eins = new GLQuader(430,-250,430,40,500,40);
        zwei = new GLQuader(-430,-250,430,40,500,40);
        drei = new GLQuader(-430,-250,-430,40,500,40);
        vier = new GLQuader(430,-250,-430,40,500,40);
        
        links = new GLQuader(-50, 50, 0, 10, 100, 100);
        vorne = new GLQuader(0, 50, 50, 100, 100, 10);
        rechts = new GLQuader(50, 50, 0, 10, 100, 100);
        hinten = new GLQuader(0, 50, -50, 100, 100, 10);
        oben = new GLQuader(0, 100, 0, 100, 10, 100);
        unten = new GLQuader(0, 0, 0, 100, 10, 100);
        
        left = new GLQuader(150, 50, 150, 10, 100, 100);
        front = new GLQuader(200, 50, 200, 100, 100, 10);
        right = new GLQuader(250, 50, 150, 10, 100, 100);
        back = new GLQuader(200, 50, 100, 100, 100, 10);
        up = new GLQuader(200, 100, 150, 100, 10, 100);
        down = new GLQuader(200, 0, 150, 100, 10, 100);
        
        
        links.setzeTextur("drei.jpg");
        vorne.setzeTextur("fünf.jpg");
        rechts.setzeTextur("vier.png");
        hinten.setzeTextur("zwei.jpg");
        oben.setzeTextur("sechs.jpg");
        unten.setzeTextur("eins.png");
        
        left.setzeTextur("drei.jpg");
        front.setzeTextur("fünf.jpg");
        right.setzeTextur("vier.png");
        back.setzeTextur("zwei.jpg");
        up.setzeTextur("sechs.jpg");
        down.setzeTextur("eins.png");
        
        if(tastatur.istGedrueckt('f')){
            
        }
    }
}

Computer, Schule, programmieren, Java, Würfelspiel, BlueJ, Informatik, GLOOP
cooldown in command?

Hallo ich möchte das mann wenn mann denn command /feed eingibt einen cooldown von z.b. 5 minuten bekommt das heißt das mann nur alle 5 minuten /feed machen kann wie ist das möglich hier meine classe

package de.MysticMC.commands;

import org.bukkit.command.Command;

import org.bukkit.command.CommandExecutor;

import org.bukkit.command.CommandSender;

import org.bukkit.entity.Player;

import de.liquid.core.GameCore;

import de.liquid.core.group.Groups;

import de.liquid.core.profile.PlayerProfile;

public class FeedCommand implements CommandExecutor {

   public boolean onCommand(CommandSender sender, Command cmd, String feed, String[] args) {

       Player p = (Player)sender;

       if(PlayerProfile.hasHigherRank(p.getUniqueId(), Groups.PREMIUM)){

          p.setFoodLevel(20);

           if(cmd.getName().equalsIgnoreCase("feed")) {

               if(p instanceof Player) {

                  if(args.length == 0) {

                     p.sendMessage(GameCore.getCore().getPrefix() + "§7Dein §2Hunger §7wurde Gestillt");

                  }else{

                     p.sendMessage(GameCore.getCore().getPrefix() +"§cNutze: §b/feed");

                  }

               }else{

                  sender.sendMessage(GameCore.getCore().getPrefix() +"§cDu musst ein Spieler sein!");

               }

           }

       }else{   

          p.sendMessage("");

           p.sendMessage(GameCore.getCore().getPrefix() + "§7Du benötigst minimum §6Premium §7Um /feed Nutzen zu können!");

           p.sendMessage("");

           p.sendMessage("§7Hier kommst du zu unserem shop: §ehttp://shop.mysticmc.de");

           p.sendMessage("");

      }

      return false;

 }

}

programmieren, Java, Minecraft, Entwicklung, Commands, Spigot
Könnte man moderne Spiele in Java programmieren?

Soweit ich weiß werden die meisten der brandneuen Spiele, vor Allem die, die aufwendige Grafiken beinhalten, meistens in reinen "Compiler-Sprachen" (ich kenne den Fachbegriff leider nicht, aber ich glaube man weiß, was gemeint ist?) programmiert. Also Sprachen wie z.b. C++. Das macht aufgrund der besseren Performance ja auch, soweit ich das beurteilen kann, Sinn.

Wenn man die Sinnhaftigkeit aber mal außer Acht lässt und sich rein auf die Realisierbarkeit fokussiert, wäre es dann möglich, Titel wie Black Ops 4 Oder Battlefield 5 von Grund auf und einzige in Java zu schreiben? Wie sähe es mit CAD-Anwendungen aus? Könnte Software, die mit Blender oder Photoshop verglichen werden kann, in Sprachen wie Java geschrieben werden?

Könnte man solche Projekte auch ohne größere Performanceeinbußen realisieren? - Oder anders gefragt: Ein "perfekter" Code, jeweils in Java und einer Sprache wie C++ werden zum Vergleich gezogen. Wenn die selbe Arbeit verrichtet werden soll, in welcher Größenordnung liegen die Einbußen von Java? Sind das gegenüber C++. Kann man das noch einigermaßen in Kauf nehmen?

Mir geht es bei der Frage im Grunde genommen darum, mich endlich zu entscheiden welche Programmiersprache ich lernen möchte. Aus zeitlichen Gründen und auch deshalb, weil es mich hinsichtlich meines Berufes überhaupt nicht tangiert möchte ich mich auf eine einzige Sprache beschränken und das dafür richtig machen. Dabei wollte ich wenn möglich eine Sprach die Alles erlaubt. Da kam mir als erstes Java in den Sinn. Läuft überall, ist der Hit, wenn es um Android geht, und für Anfänger wohl besser geeignet als z.B. C++. Mir ist klar, dass Java Grenzen kennt, wenn es um hardwarenahe Programmierung geht. - Ein Treiber in Java, wäre das überhaupt möglich?

Hier haben Sprachen wie C++ tatsächlich die Nase vorne, aber auch da hat man, in den Bereichen wo Assembler eingesetzt wird, Grenzen.

Im Grund genommen ist das, wonach ich suche wahrscheinlich genau C++, man kann sich ja, soweit ich weiß, auch selbst Laufzeitumgebungen basteln oder mit virtuellen Maschinen arbeiten, so dass der Großteil vom Code auch systemübergreifend funktioniert. Ich finde an C++ einfach nichts schlechtes. Allerdings hat mich schon der erste Blick in ein C++ Buch vollständig demotiviert. Es scheint mir so, als sei es um einiges schwieriger als Java, alleine schon was die Syntax angeht... Man könnte meine Frage also auch so formulieren: Lohnt es sich, wenn man sich den Weg zu aufwendigen Anwendungen offen halten möchte, C++ zu lernen, oder sind die Defizite von Java so gering, dass man es sich beim Lernen leichter machen sollte.

Ich entschuldige mich, wenn ich irgendwo fachliche Fehler eingebaut habe und freue mich natürlich, wenn ich korrigiert werde, ich eben alles andere als ein IT-Spezialist.

Es wäre nett, wenn ihr eure Meinung mit mir teilt.

Computer, Technik, programmieren, Java, Cplusplus, Informatik, Programmiersprache
Java "Hauptklasse konnte nicht gefunden oder geladen werden"?

Ich habe gestern angefangen java zu lernen, ich nutze die IntelliJ IDE von jetbrains.

Wenn ich in meinem Projekt mehr als eine Klasse habe bekomme ich beim ausführen folgenden fehler:

Fehler: Hauptklasse Test.jar konnte nicht gefunden oder geladen werden
Ursache: java.lang.ClassNotFoundException: Test.jar

Ich erstelle die .jar datei folgendermaßen:

Bei IntelliJ habe ich unter Projectstructur/artifacts einen neuen eintrag erstellt, als Main Class meine main Klasse angegeben und dann über Build/Build Artifacts/Build die jar datei erstellt. In dem Ordner mit dieser Datei befindet sich ausschließlich die Test.jar Datei (Was, nebenbei bemerkt nicht der Name meiner Klasse ist, sollte das irgentwelche auswirkungen haben ist es allerdings nicht der Grund für mein Problem da ich bereits ein zweites projekt erstellt habe, in welchem die Klasse und die jar Datei gleich hießen und es dennoch nicht funktioniert hat (Selbe Fehlermeldung)), welche ich dann mit 'java Test.jar' ausführe. Nun bekomme ich den oben gennanten error. Meine Hauptklasse sieht wie folgt aus:

import cons.colors;

public class greyscale_converter {

public static void main(String[] args){

    System.out.println(args[0]);
}

}

Ich habe dann in dem Projekt noch das package 'cons' erstellt, in welchem sich die Klasse 'colors' befindet. Diese sieht wie folgt aus:

package cons;

public class colors {
}

Ich möchte nun also die jar datei erstellen können und von der main methode in der 'greyscale_converter' Klasse auf die klasse colors zugreifen können, bevor ich allerdings soweit kam erhielt ich schon die Fehlermeldung nach welcher die Hauptklasse nicht gefunden werden könne. Nach einer halben stunde googlen bin ich noch auf keine Lösung gestoßen die bei mir funktioniert hat. Danke schonmal.

Computer, programmieren, Java, Fehlermeldung, IntelliJ IDEA
Java Swing: Wie kann ich Klicks auf Buttons zählen?

Hallo zusammen,

folgendes Programm habe ich. Nun möchte ich dieses noch optimieren. Es soll nun neben dem Button angezeigt werden, wie oft der Button geklickt wurde. Kann mir hier jemand helfen?

Vielen Dank!

import javax.swing.*;
import java.awt.*;
// Event brauchen wir für das Ereignis, wenn ein Button geklickt wird
import java.awt.event.*;

public class FirstGUI extends JFrame {
  private JButton button1;
  private JButton button2;
  private JButton button3;
  private JPanel panelButton;
  private JLabel oben;
  private JLabel anzeige;

  public FirstGUI() {
    super("Fenster");
    setLocation(300, 300);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // Das BorderLayout ist mal das erste - später fügen wir noch ein GridLayout im Westen hinzu
    getContentPane().setLayout(new BorderLayout(5, 5));
    
    // Buttons erzeugen
    button1 = new JButton("Button 1");
    button2 = new JButton("Button 2");
    button3 = new JButton("Button 3");

    // Panels erzeugen auf einem GridLayout
    panelButton = new JPanel(new GridLayout(3, 1));

    // Auf Panel Buttons packen
    panelButton.add(button1);
    panelButton.add(button2);
    panelButton.add(button3);

    // Listener für Buttons
    addButtonListener(button1);
    addButtonListener(button2);
    addButtonListener(button3);

    // Labels erzeugen
    oben = new JLabel("Layout Test");

    // Label zentrieren
    oben.setHorizontalAlignment(JLabel.CENTER);
    anzeige = new JLabel("Button klicken");

    // Labels auf Frame packen (direkt auf das BorderLayout)
    getContentPane().add(BorderLayout.NORTH, oben);
    getContentPane().add(anzeige);

    // Panels auf Frame packen (das panelButton hat ein GridLayout, dass jetzt in den WestBereich des BorderLayouts kommt)
    getContentPane().add(BorderLayout.WEST, panelButton);
    pack();
    setVisible(true);
  }

  public static void main(String[] args) {
    FirstGUI g = new FirstGUI();
  }

  private void addButtonListener(JButton b) {
    b.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        eingabe(ae.getActionCommand());
      }
    });
  }

  private void eingabe(String a) {
    anzeige.setText(a);
  }
}

programmieren, Java

Meistgelesene Beiträge zum Thema Java