Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Lind L. Tailor

#1
Creo que ya había visto esto en otro foro, te anexo la liga de donde se publica la solución, solamente sería cuestión de adecuarlo a tus necesidades o bien, hacer cambios de acuerdo tu razonamiento.

http://www.lawebdelprogramador.com/foros/Java/1519049-uso-de-bucles-contadore-acumuladores-y-banderas.html

Sin mas que comentar, cualquier duda y/o comentario, estamos al pendiente.

Suerte!
#2
Java / Re: Duda con netbeans
14 Agosto 2015, 19:55 PM
Sino mal recuerdo, cuando creas una nueva clase en Netbeans, por defecto te coloca la siguiente anotación...

Código (java) [Seleccionar]
/**
* @author robertoht
*
*/


Que al final viene siendo el nombre del desarrollador; es decir, el usuario del equipo. Ahora, puedes evitar que te cree esa anotación, existe una opción en Netbeans para crear una Class Empty, que viene siendo el archivo en blanco sin código ni anotaciones previas.

Lo preocupante aquí es que tu compañero no se haya tomado la molestia de investigar sobre esa información, cosa que en lo que a mi respecta me atrevería a decir con total seguridad que es falsa, tal y como dice Usuario Invitado, únicamente se guarda configuraciones del proyecto.

No creo que al IDE le importe... Tiempo: 48 horas, 20 minutos, 10 segundos... ^^!!

Ahora, si es correcta, que te diga en que parte de todo el código lo encuentra y si lo haya, le invito una coca-cola, como decimos aquí en el trabajo si es verdad y/o posible hacer algo.

#3
Hola...

Ejecute tu código tal y como lo tienes, y no tengo inconveniente alguno, todo corre perfectamente, lo cual nos indica que el error no se encuentra en donde tu lo mencionas, y a juzgar por la excepción estas en la línea equivocada ya que podemos observar que lo tienes en la línea 25: at ingresodecimales.IngresoDecimales.main(IngresoDecimales.java:25)...

Código (java) [Seleccionar]

ingrese un numero con decimal
3.2
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextDouble(Scanner.java:2456)
at ingresodecimales.IngresoDecimales.main(IngresoDecimales.java:25)
Java Result: 1


Por lo tanto, posiblemente tienes algún otro método después de ello la cual te genera el error, ahora bien también existe la posibilidad de que no estas ingresando el separador correcto; es decir, que en vez de un punto estas ingresando una coma, lo cual nos lanza la excepción que tu efectivamente mencionas.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos. Suerte!
#4
Java / Re: Inconveniente con Quartz
8 Mayo 2015, 02:28 AM
Gracias por el tiempo dedicado a leer este tema, sin embargo, paso a cerrarlo ya que "encontré" la respuesta.
#5
Java / Inconveniente con Quartz
6 Mayo 2015, 19:49 PM
Hola...

Como están mis estimados compañeros, espero que estén teniendo un día agradable pero sobre todo espero que su código este ejecutándose correctamente ;D...

Mi problema radica en la implementación de hilos mediante el uso de la librería llamada Quartz, explico brevemente el framework... Quartz, es una librería que permite ejecutar trabajos o tareas mediante un tiempo de terminado, podemos decir que en esencia viene siendo lo que conocemos en Java como un Timer/TimerTask. Primeramente necesitamos una clase que implemente la interface Job, la cual tiene como método execute(), el cual va a contener nuestro acción a ejecutar. Posteriormente necesitamos una clase que ademas de contener el famoso método main, contiene la configuración de nuestro trabajo a ejecutar, tal y como podemos ver a continuación... (Creo que si fue breve xD)

Carga.java
Código (java) [Seleccionar]

public class Carga implements Job {

public void execute(JobExecutionContext context) throws JobExecutionException {
for(int i = 0; i < 10000; i++){
try {
Thread.sleep(10);
System.out.println("Index: " + i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}


CargaMain.java
Código (java) [Seleccionar]

public static void main(String[] args) throws SchedulerException {
Scheduler scheduler = new StdSchedulerFactory().getScheduler();

Trigger trigger = TriggerBuilder.newTrigger().withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10).repeatForever()).build();

JobDetail prueba = JobBuilder.newJob(Carga.class).withIdentity("hola","adios").build();

scheduler.scheduleJob(prueba, trigger);
scheduler.start();
}


Como podemos ver, únicamente quiero una impresión de números en pantalla el cual si ejecutamos podemos ver en consola la salida de manera correcta, sin embargo, podemos ver que cuando pasan los 10 segundos que es el intervalo en que se va a ejecutar, se dispara nuevamente y vemos en pantalla algo parecido a lo siguiente...

Index: 0
Index: 793
Index: 1
Index: 794
Index: 2
Index: 795
Index: 3
Index: 796
Index: 4
Index: 797
Index: 5
...

A simple vista sabemos que el error es que no controlamos las llamadas por lo tanto podemos ver como se intercalan los números, para ello eh indago por Internet para controlar lo mencionado anteriormente y afortunadamente encontré la "solución" ante tal  inconveniente, incluso podemos decir que la solución es universal ya que en todos los temas que eh encontrado relacionado a este problema mencionan el mismo bloque de código, dejando el código de CargaMain de la siguiente manera...

CargaMain.java
Código (java) [Seleccionar]

public static void main(String[] args) throws SchedulerException {
Scheduler scheduler = new StdSchedulerFactory().getScheduler();

Trigger trigger = TriggerBuilder.newTrigger().withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10).repeatForever()).build();

JobDetail prueba = JobBuilder.newJob(Carga.class).withIdentity("hola","adios").build();
if (prueba != null) {
        List<JobExecutionContext> currentlyExecutingJobs = (List<JobExecutionContext>) scheduler.getCurrentlyExecutingJobs();
        for (JobExecutionContext jec : currentlyExecutingJobs) {
            if(prueba.equals(jec.getJobDetail())) {
               System.out.println("RUNNING...");
            }
        }
    }

scheduler.scheduleJob(prueba, trigger);
scheduler.start();
}


Sin embargo, el resultado es el mismo :(, no controla la llamada como debería ser, mi pregunta es ¿Cual sería la forma correcta de adaptar del código? ya que como lo estoy haciendo no cabe duda que es la errónea.

Ahora bien, tengo entendido que me estoy complicando la vida y puedo hacer uso de la clase TimerTask para representar lo que necesito arriba, tal y como podemos ver a continuación...

Código (java) [Seleccionar]

public class Carga extends TimerTask{
public static Timer timer;

public static void main(String[] args) {
TimerTask tasknew = new Carga();
timer = new Timer();
timer.scheduleAtFixedRate(tasknew,500,1000);
}

public void run() {
try {
for (int i = 0; i < 1000; i++){
Thread.sleep(10);
System.out.println("Index: " + i);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


Si ejecutamos lo siguiente vemos que imprime correctamente los primeros 1000 números e inmediatamente los próximos 1000 si el tiempo es muy corto, mi otra pregunta es... ¿Cual el proceso interno que realiza Java para el TimerTask de tal forma que si obtenga lo que necesito a diferencia de Quartz?

Disculpen mi pregunta pero la API no me ah ayudado mucho a comprender y despejar mis dudas...
#6
Java / Re: Println en cmd desde .jar
30 Abril 2015, 19:24 PM
Por no creerme no te funcioanra xD :silbar:
#7
Java / Re: Println en cmd desde .jar
30 Abril 2015, 18:00 PM
Cita de: PabloPbl en 30 Abril 2015, 17:57 PM
Muy interesante tu solución, aunque había visto algo parecido por StackOverFlow, pero nunca me puse a probar xD.

Haber si en un rato lo pruebo.

Saludos!!

Créeme, funciona correctamente ;)
#8
Java / Re: Println en cmd desde .jar
30 Abril 2015, 17:47 PM
Hola...

Como están compañeros programadores, espero que su día este saliendo de maravillo, sino recuerden que todo tiene solución ;)...

Como comentaba en un tema posterior a este, a continuación, proporciono la solución...

IMPORTANTE: La solución no fue otorgada por su servidor, código original: Profesor_Falken.

Como sabrán el objetivo de este tema era "enlazar" dos aplicaciones java la cual al ejecutar una de ellas mediante línea de comando, mandábamos a llamar la segunda aplicación y así obtener como salida el famoso "HOLA MUNDO", donde la palabra "HOLA" se encontraba en el primer archivo y la palabra "MUNDO" en el segundo.

Comprendí el error cuando entendí que el problema no era la forma en que estábamos llamando a los archivos, incluso podríamos intentar infinidad de códigos desde java con el fin de obtener la salida espera pero el resultado siempre iba a ser el mismo, la razón se debe a que erróneamente pensaba que el método exec() de la clase Runtime se encargaba de EJECUTAR, ESPERAR y MOSTRAR la salida en consola del archivo llamado... Pensamiento erróneo, efectivamente ejecuta el archivo mas no realiza los últimos dos, y es que si lo analizamos estamos diciendo a nuestra aplicación "Ejecuta el Archivo.jar" mas no le estamos diciendo "Espera a que termine su ejecución y muestra por consola lo que te trae", en pocas palabras nosotros tenemos que programar las ultimas dos acciones lo cual se logra con la clase Process...

Código (java) [Seleccionar]

try {
Process p = Runtime.getRuntime().exec("java -jar C:\\Mundo.jar");
BufferedReader output = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));

 String linea= "";

while ((linea= output.readLine()) != null) {
System.out.println(linea);
}

while ((linea= error.readLine()) != null) {
System.out.println(linea);
}

p.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}


Con gusto proporciono la dirección web de la clase mencionada anteriormente, ya que estoy seguro que les servirá para comprender de mejor forma todo el proceso http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html.

Sin mas que comentar, agradezco a los compañeros interesados en el tema y por sus soluciones, así como agradecimientos a Profesor_Falken por tan excelente solución, marco tema como solucionado.
#9
Java / Re: Timer (Poleo)
30 Abril 2015, 17:24 PM
Hola...

Gracias por su tiempo dedicado a la lectura del tema... Supongo que tengo que empaparme bien de la documentación para la creación de tareas programadas, aunque siempre me ha confundido la creación de Threads, Timer, TimerTask, etc, sin embargo, a pesar de conseguir una respuesta totalmente factible, decidí implementar la librería Quartz,  la cual sigo estudiando ya que sigo sin comprender bien el proceso que con lleva la ejecución de tareas programadas.

Marco el tema como solucionado.
#10
Java / Timer (Poleo)
30 Abril 2015, 00:49 AM
Hola...

Nuevamente yo compañeros, pero es que la verdad ya intente lo mas que pude y no consigo resultado positivo alguno, además que la documentación que encuentro sigue sin serme muy clara todavía para mis necesidades, espero explicarme lo mas posible...

Verán, tengo una aplicación de java lista para ejecutarse desde línea de comando, dicha aplicación tiene como objetivo consultar a base de datos, crear directorios por cada registro de la base así como crear archivos de texto plano dentro de los directorios previamente creados, sin embargo, dicha aplicación no la ejecuto directamente desde consola sino mas bien es ejecutada mediante otra aplicación java a través de un timer, el objetivo del timer es ejecutarse cada 10 minutos y cuando termine de ejecutarse el .jar que es llamado pasa a un estado de pausa para posteriormente cuando sean los 10 minutos, ejecutarse nuevamente. No obstante, mi problema no radica en lograr hacer este proceso, mas bien se enfoca que cuando ejecuto mi .jar para llamar al siguiente veo que la creación de las carpetas es sumamente lenta comparada a como debería crearlas, además de que el contenido por cada carpeta de acuerdo a la ejecución individual del archivo (Ejecute el archivo que contiene toda el código "rudo" directamente) deben ser un total de 8 archivos y veo que me crea el doble de archivos

A continuación, proporciono mi código correspondiente al poleo...

Código (java) [Seleccionar]
package com.comerciales.canada.main;

import java.util.Timer;
import java.util.TimerTask;

public class PoleoCarpeta {
Timer timer;

    public PoleoCarpeta() {
        timer = new Timer();
        timer.schedule(new PoleoCarpetaTask(),0,60000);
}

    public void timerSleep(){
    System.out.println("Poleo PAUSADO");
    try {
Thread.sleep(60000);
timer.cancel();
timer.purge();
new PoleoCarpeta();
} catch (InterruptedException e) {
e.printStackTrace();
}
    }
   
    class PoleoCarpetaTask extends TimerTask {
    public void run() {
    System.out.println("Poleo REANUDADO");
    try {
Runtime.getRuntime().exec("java -jar C:\\Legada\\ProyectoComercialesCarga.jar");
timerSleep();
} catch (Exception e) {
e.printStackTrace();
}
    }
    }

    public static void main(String args[]) {
    System.out.println("Poleo COMENZADO");
    new PoleoCarpeta();
    }
}


No estoy seguro si este fallo en especial (Creación de carpetas lento y duplicación de archivos) corresponde al timer o bien a la programación que se encuentra en el otro archivo.

Sin mas que comentar, agradezco su tiempo y pronta respuesta. Que tengan un excelente día...

P.D.1. Si es necesario el otro archivo con gusto comparto el código.
P.D.2. Con respecto al detalle del println(), eh conseguido la solución gracias a un compañero, en un momento subo la solución en el tema correspondiente.