es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mensaje de error de Java java.util.prefs.WindowsPreferences

¿Qué causa el siguiente mensaje de advertencia/error? ¿Y cómo deshacerse de él?

Dec 31, 2021 3:10:05 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.

Tengo una clase NotePlayer.java y un programa de prueba NotePlayerTest.java, y cuando ejecuto este último, funciona bien, pero obtengo el mensaje de advertencia anterior, el cual me gustaría rectificar.

Un fragmento de NotePlayer:

import javax.sound.midi.*;

public class NotePlayer {

/**
     *  Program: NotePlayer.java
     *  Purpose: Simple musical note player, plays a single note.
     *  Creator: Chris Clarke
     *  Created: July 2007
     */

MidiChannel[]    mc;
   Synthesizer      synth;
   Instrument[]     instr;
   int          tmpo = 500; // fixed tempo of 120 beats/minute
   boolean      done = false;

public void loadInstr() {
      // only necessary to run this method once
      if (done) return;

  for (int voice=0; voice<16; voice++) {
     try {
        synth = MidiSystem.getSynthesizer();
        synth.open();
        mc = new MidiChannel[16];
        mc = synth.getChannels();
        instr = synth.getDefaultSoundbank() .getInstruments();
        synth.loadInstrument (instr[voice]); // 0-15
     }
     catch (Exception e) { System.out.println("Caught exception"); }
  }
  done = true;
} // end loadInstr()

public void playNote(int voice, int pitch, int duration, int vol) {
      // play note
      mc[voice].noteOn(pitch, vol);
      for (int i=0; i<duration; i++) {
         try {
            thread.sleep(tmpo/4); // pause for one semiquaver
         } catch (interruptedexception e) {}
      }
      // stop playing note
      mc[voice].noteoff(pitch, vol);
   } // end playnote(int, int, int, int)

y mi archivo noteplayertest.java es el siguiente:

public class noteplayertest {

/**
     *  program:    noteplayertest.java by chris clarke
     *  created:    04 july 2007
     *  purpose:    test my noteplayer class
     */

public static void main(string[] args) {
      noteplayer np = new noteplayer();
      np.loadinstr();
      // parameters are voice (0-15), pitch, duration, volume
      np.playnote(2, 42, 4, 600);
      np.playnote(2, 46, 4, 600);
      np.playnote(2, 49, 4, 600);
   }
}
``` i++)="" {="" try="" {="" thread.sleep(tmpo/4);="" pause="" for="" one="" semiquaver="" }="" catch="" (interruptedexception="" e)="" {}="" }="" stop="" playing="" note="" mc[voice].noteoff(pitch,="" vol);="" }="" end="" playnote(int,="" int,="" int,="" int)="" ```="" y="" mi="" archivo="" noteplayertest.java="" es="" el="" siguiente:="" ```="" public="" class="" noteplayertest="" {="" **="" *="" program:="" noteplayertest.java="" by="" chris="" clarke="" *="" created:="" 04="" july="" 2007="" *="" purpose:="" test="" my="" noteplayer="" class="" */="" public="" static="" void="" main(string[]="" args)="" {="" noteplayer="" np="new" noteplayer();="" np.loadinstr();="" parameters="" are="" voice="" (0-15),="" pitch,="" duration,="" volume="" np.playnote(2,="" 42,="" 4,="" 600);="" np.playnote(2,="" 46,="" 4,="" 600);="" np.playnote(2,="" 49,="" 4,="" 600);="" }="" }=""></duration; i++) {
         try {
            thread.sleep(tmpo/4); // pause for one semiquaver
         } catch (interruptedexception e) {}
      }
      // stop playing note
      mc[voice].noteoff(pitch, vol);
   } // end playnote(int, int, int, int)

y mi archivo noteplayertest.java es el siguiente:

“`
public class noteplayertest {

/**
* program: noteplayertest.java by chris clarke
* created: 04 july 2007
* purpose: test my noteplayer class
*/

public static void main(string[] args) {
noteplayer np = new noteplayer();
np.loadinstr();
// parameters are voice (0-15), pitch, duration, volume
np.playnote(2, 42, 4, 600);
np.playnote(2, 46, 4, 600);
np.playnote(2, 49, 4, 600);
}
}
“`>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de advertencia es causado por la clase WindowsPreferences en el paquete java.util.prefs cuando intenta abrir o crear un nodo raíz en el registro de Windows. El código de error 5 indica un error de acceso denegado, lo cual significa que el usuario actual no tiene permiso para crear la clave del registro.

    Para deshacerse del mensaje de advertencia, puede intentar ejecutar el programa con privilegios administrativos o modificar los permisos de la clave del registro Software\JavaSoft\Prefs para otorgar al usuario actual acceso de escritura. Otra opción es desactivar las preferencias por completo estableciendo la propiedad de sistema “java.util.prefs.PreferencesFactory” como “java.util.prefs.NullPreferencesFactory” antes de crear cualquier objeto de preferencias. Esto evitará que aparezca el mensaje de advertencia, pero puede afectar la funcionalidad de su programa si depende de las preferencias.

Comments are closed.