Problemino con processing!

Salve gente! Ho un problemino con processing. Al momento della compilazione del file tutto ok, ma non appena vado ad eseguire il file creato (quello che si trova nella cartella applet) mi compare una finestra (Java Virtual Machine Launcher) con scritto: Could not find the main class: Controllo_servo. Program will exit. Cosa può essere e come posso risolvere?

P.S. Controllo_servo è il nome del file!

posta il codice

Ecco:

/* Controllo servo by Xfox, parte processing.
 Questo programma permette di controllare due servomotori
 tramite un interfaccia grafica */

//Importo librerie
import processing.serial.*;
import controlP5.*;

Serial myPort; //Creo l'oggetto della porta seriale
ControlP5 controlP5; //Cre oggetto per interfaccia grafica

//Creo oggetti per le "manopole"
Knob Servo1;
Knob Servo2;
//Creo oggetti textarea
Textarea text1;
Textarea text2;
Textarea text3;
Textarea text4;

int Bat_Level = 100;
boolean firstContact = false;

void setup() {
  background(#000000);
  size(400,200); //Grandezza finestra
  smooth();
  controlP5 = new ControlP5(this);

  //Creo prima manopola
  Servo1 = controlP5.addKnob("servo1",180,0,90,50,50,100);
  Servo1.setRange(PI);
  Servo1.setOffsetAngle(PI);
  text1 = controlP5.addTextarea("text1", "Servo 1",75,160,50,50);

  //Creo seconda manopola
  Servo2 = controlP5.addKnob("servo2",180,0,90,250,50,100);
  Servo2.setRange(PI);
  Servo2.setOffsetAngle(PI); 
  text2 = controlP5.addTextarea("text2", "Servo 2",275,160,50,50);

  //Creo slider
  controlP5.addSlider("Bat_Level",0,255,0,150,30,100,10);
  Slider s1 = (Slider)controlP5.controller("Bat_Level");
  text3 = controlP5.addTextarea("text3", "Livello batteria",175,10,100,50);


  //Stabilisco comunicazione seriale sulla porta COM3
  myPort = new Serial(this, "COM3", 9600);
}


void draw(){} //Loop principale vuoto

//Funzione per gli eventi seriali
void serialEvent(Serial myPort) {

  if (firstContact == false) {
    if (myPort.read() == 'A') { 
      myPort.clear();
      firstContact = true;  
      text4 = controlP5.addTextarea("text4", "Contatto stabilito",165,150,100,100);
      println("Contatto stabilito");
    }
  } 
  else if (firstContact == true) {  
    int batlevel = myPort.read();
   
    controlP5.controller("Bat_Level").setValue(batlevel);
    int valore1 = (int)Servo1.value();
    int valore2 = (int)Servo2.value();
    myPort.write(valore1);
    myPort.write(valore2);
    print("Servo 1: "+valore1);
    println("\t Servo 2: "+valore2);
  }
}

void servo1() {
  int valore1 = (int)Servo1.value();
  println("Variazione valore Servo 1: "+valore1);
}

void servo2() {
  int valore2 = (int)Servo2.value();
  println("Variazione valore Servo 2: "+valore2);
}

int val1 = 90;
int val2 = 90;

void keyPressed() {
  //Reset alla pressione di "r" o "R"
  if (key == 'r' || key == 'R') {
    Servo1.setValue(90);
    Servo2.setValue(90);
  }

  if(key == CODED) {
    if(keyCode == LEFT) {
      if((val1 < 180) && (val2 < 180)) {
        val1 += 10;
        val2 += 10;

        Servo1.setValue(val1);
        Servo2.setValue(val2);
      }
    }
    else if(keyCode == RIGHT) {
      if((val1 > 0) && (val2 > 0)) {
        val1 -= 10;
        val2 -= 10;

        Servo1.setValue(val1);
        Servo2.setValue(val2);
      }
    }
  }
}

Up

boh a me funziona da dio.. prova a reinstallare processing... bella gui, mi piace lo slider, mo lo uso anch'io per controllare lo stato dei motori :)

Se ti può interessare ne sto facendo uno per controllare due motori in corrente continua (faccio sia lato processing che lato arduino) :) Appena lo finisco il progetto lo posterò!

Scusate doppio post, volevo aggiungere che il problema si presenta con iprogrammi com quello scritto sopra, ho provato con programmini semplici e non avviene!

non il problema si presenta solo quando uso la libreria controlP5? magari hai scaricato una versione per un altro sistema operativo o per un'architettura errata (32 / 64 bit)

Quando lo eseguo da processing però il programma si avvia! Può essere sempre lo stesso problema?

ahhh ma tu stai cercando di usare il programma all’esterno di processing!!! mi ero perso un pezzo!
file → export application. Ti crea anche un file lanciatore per ogni SO: se lo apri vedi che non è altro che un comando da terminale con l’include delle varie librerie native (dipendenti dal SO) ecc… così se vuoi capire anche che combiana e cambiare qualche impostazione prima del rilascio :slight_smile:

Ma io sto parlando proprio di questo! Quando avvio quel file mi compare quel messaggio!

Scusa doppio post! Ci sono riuscito cliccando su export application piuttosto che semplicemente export...

che pirla che son stato, non avevo letto bene il primo messaggio, per caso ieri l'ho riletto e trovato l'inghippo :-)

Ti ringrazio :)