[Java] UserID herausfinden

10/11/2012 22:28 .Resistance#1
Hi
ich versuche hier gerade unter Linux (Ubuntu) eine Java Funktion zu schreiben, die mir die UserID zurück gibt.
Ich habe hier folgenden Code, aber er funktioniert nicht ;)
PHP Code:
public static int getUID ( )
    {
        try
        {
            
Process p = new ProcessBuilder "id""-u" ) . start ( ) ;
            
//OutputStream outS = null ;
            
            
StringBuffer commandResult = new StringBuffer ( ) ;
            
            
//outS = ( BufferedOutputStream ) p . getOutputStream ( ) ;
            //outS . close ( ) ;
            
            
String output commandResult toString ( ) ;
            
System out println "CommandResult: " commandResult toString ( ) ) ;
            
int uid ;
            try
            {
                
uid =  Integer parseInt commandResult toString ( ) ) ;
            }
            catch ( 
Exception e ) { 
                
System out println ) ;
                
uid 666 
            }
            return 
uid ;
        }
        catch ( 
Exception e ) { 
            
System out println ) ;
            return 
666
        }
        
    } 
(Ich weiß, der Code ist nicht schön, aber an sich funktioniert er)
Und "id -u" gibt die UserID aus.
Aber es wird nicht mal das CommandResult als String ausgegeben. d.h. es wird wohl nichts ausgeführt.
Habe es auch schon mit dem absoluten Pfad zu id ("/usr/bin/id") probiert
10/12/2012 09:25 fatalaty#2
Guten Morgen!

Gibts ne Exception? Wenn ja, poste die mal. Bist du ansonsten schon mal mitm debugger durchgegangen?

Gruß
10/12/2012 12:47 .Resistance#3
Exception:
Code:
java.lang.NumberFormatException: For input string: ""
Zum Debugger: muss ich mir mal anschauen. Hab das nich nie probiert ^^
Hab davor immer mit Anfänger-Entwicklungsumgebungen gearbeitet
10/12/2012 14:24 fatalaty#4
Du erstellst einen StringBuffer ohne parameter. Das bedeutet, er ist einfach leer. Mit der Methode toString() bekommst du nun einen String zurück welcher ebenfalls leer ist, also durch "" repräsentiert wird. So ist nun auch dein commandResult folglicher Weise leer.

Versuchst du nun den leeren String zu einem int zu parsen schmeißt er logischerweise die exception, da der Parser nicht weiß, wie er damit umgehen soll.

Ich brauche nun weitere Informationen dazu, was genau du mit dem code bezwecken willst um dir weiterhelfen zu können.
10/12/2012 14:37 .Resistance#5
Naja ich will ganz einfach die User ID herausfinden. Dafür bietet Java leider keine Funktion.
Desshalb will ich "id -u" ausführen, dadurch bekomme ich die User ID (nur die ID sonst keinen weiteren Text). Dann will ich die ID zurückgeben.
Da der String leer ist, wird der Befehl wohl nicht mal ausgeführt. Sonst müsste es ja irgendeinen Output geben
10/12/2012 14:49 fatalaty#6
Ich kenne mich mit ubuntu nicht aus, aber da du keinelei Verknüfung zwischen dem StringBuffer und dem Process herstellst ist es kein Wunder, dass du keine Ausgabe bekommst.

Was dir weiterhilft:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]