Archivos de Categoría: Java @es

Poner el pathname completo de una instalación JDK al ejecutar Oracle SQL Developer

Al ejecutar Oracle SQL Developer por primera vez te pedirá que le indiques la ruta donde tienes instalada la JDK de Java:

 Oracle SQL Developer
 Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.

Type the full pathname of a JDK installation (or Ctrl-C to quit), the path will be stored in /home/user/.sqldeveloper/4.0.0/product.conf

oracle sql developer

Si no sabes cuál es esa ruta puedes ejecutar el siguiente comando para ver todas las JDK disponibles y cuál de ellas es la que está actualmente en uso:

$ sudo /usr/sbin/update-alternatives --display javac
javac - auto mode
  link currently points to /usr/lib/jvm/java-7-oracle/bin/javac
/usr/lib/jvm/java-7-openjdk-amd64/bin/javac - priority 1051
  slave javac.1.gz: /usr/lib/jvm/java-7-openjdk-amd64/man/man1/javac.1.gz
/usr/lib/jvm/java-7-oracle/bin/javac - priority 1052
  slave javac.1.gz: /usr/lib/jvm/java-7-oracle/man/man1/javac.1.gz
Current 'best' version is '/usr/lib/jvm/java-7-oracle/bin/javac'.

No tienes que darle a Oracle SQL Developer la ruta completa sino que solo la ruta que contiene la carpeta bin, en mi caso /usr/lib/jvm/java-7-oracle.

Soporte MTP para Nexus 4 en Ubuntu 12.04

Añade el repositorio de paquetes langdalepl/gvfs-mtp y actualiza:

sudo add-apt-repository ppa:langdalepl/gvfs-mtp
sudo apt-get update
sudo apt-get install gvfs libmtp-common

Una vez termine reinicia el sistema y ya al conectar el Nexus 4 funcionará a la primera.

converged-device-440x267

Ref: http://forum.xda-developers.com/nexus-4/general/mtp-support-ubuntu-12-04precise-nexus-4-t2330238

Evitar que Android File Transfer arranque automaticamente en Mac OS X al conectar el dispotivo Android al puerto USB

La aplicación “Android File Transfer” arranca automáticamente en Mac OS X cuando conectas un dispositivo Android al puerto USB. Incluso si sólo quieres cargarlo.

Adroid File Transfer

Estos son los pasos que hay que seguir para evitar este (molesto) comportamiento.

  1. Abrir el “Monitor de Actividad” y matar el proceso “Android File Transfer Agent”.
  2. Abrir “Preferencias del Sistema” > “Usuarios y grupos”. Ir a la pestaña de “Arranque” en tu usuario. Eliminar el “Android File Transfer Agent”.
  3. Encuentra tu “Android File Transfer.app” (normalmente está en /Applications):

    • Haz click derecho (o ctrl+click) sobre él y selecciona “Mostrar contenido del paquete”.
    • Ir a Contents/Resources.
    • Renombrar “Android File Transfer Agent.app” a por ejemplo “Android File Transfer Agent_DISABLED.app“.
  4. Ir a /Users/username/Library/Application Support/Google/Android File Transfer (puedes abrir la carpeta Library desde el menú “Ir” del Finder manteniendo pulsada la tecla “option” o ejecutando en un terminal “open ~/Library”) y renombrar “Android File Transfer Agent.app” a por ejemplo “Android File Transfer Agent_DISABLED.app“.

Ahora “Android File Transfer” no arrancará automáticamente al conectar tus dispositivos Android en el puerto USB, pero si abres la aplicación de forma manual todo funcionará perfectamente.

Fuente: http://productforums.google.com/forum/#!topic/mobile/3hPIZjP0rDo

Seleccionar una versión diferente de java y javac entre las disponibles en Ubuntu con update-alternatives

Se puede tener más de una versión de Java en la misma máquina.

openjdk

Si tienes más de una versión de Java JRE o JDK instalada puedes cambiar entre una y otra mediante el comando update-alternatives command:

$ sudo /usr/sbin/update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java to provide /usr/bin/java (java) in manual mode.

Puedes hacer lo mismo para cambiar la versión de javac:

$ sudo /usr/sbin/update-alternatives --config javac

There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                        Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk-i386/bin/javac   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk-i386/bin/javac   1061      manual mode
  2            /usr/lib/jvm/java-7-openjdk-i386/bin/javac   1051      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-7-openjdk-i386/bin/javac to provide /usr/bin/javac (javac) in manual mode.

Puedes comprobar qué versión estás usando en todo momento ejecutando:

$ java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2)
OpenJDK Server VM (build 23.7-b01, mixed mode)
$ javac -version
javac 1.7.0_25

Ejecutar un comando desde un programa Java trabajando adecuadamente con stdin, stdout y stderr

Si quieres ejecutar un comando externo desde una aplicación Java tienes que gestionar correctamente los descriptores de ficheros de entrada, salida y error ya que sino se producirá un error. La clave está en leer los buffers de salida y error. Este es un ejemplo de cómo se hace:

import java.io.*;

public class CmdExec {

  public static void main(String argv[]) {
    try {
      String line;
      OutputStream stdin = null;
      InputStream stderr = null;
      InputStream stdout = null;

      // launch the command and grab stdin/stdout and stderr
      Process process = Runtime.getRuntime().exec("ls -la");
      stdin = process.getOutputStream();
      stderr = process.getErrorStream();
      stdout = process.getInputStream();

      // You could write to sdtin too but it's useless for the ls we are doing ;)
      line = "param1" + "n";   
      stdin.write(line.getBytes() );
      stdin.flush();

      line = "param2" + "n";
      stdin.write(line.getBytes() );
      stdin.flush();

      stdin.close();
      
      // clean up if any output in stdout
      BufferedReader brCleanUp = new BufferedReader(new InputStreamReader(stdout));
      while ((line = brCleanUp.readLine()) != null) {
        System.out.println ("[Stdout] " + line);
      }
      brCleanUp.close();
      
      // clean up if any output in stderr
      brCleanUp = 
        new BufferedReader (new InputStreamReader (stderr));
      while ((line = brCleanUp.readLine ()) != null) {
        //System.out.println ("[Stderr] " + line);
      }
      brCleanUp.close();
    } catch (Exception err) {
      err.printStackTrace();
    }
  }
}