2013-05-01 29 views
5

Sto provando a eseguire il debug di un'applet su Windows 8 utilizzando Java 1.7.0_21.Java 7 Debug su Windows 8 non funzionante

Ho aggiunto il bleow ai parametri di runtime.

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 

Quando provo a collegarlo ottengo "Could not aprire la connessione con l'host, sulla porta 5005" errore su entrambe le macchine locali e remote.

Se faccio un netstat -an non vedo nessuna porta 5005 in ascolto. Sembra che la JVM non stia aprendo la porta di ascolto del debug.

Ho aggiunto la porta al firewall e anche completamente disabilitato il firewall, ma nessuna differenza.

Qualcun altro ha provato a eseguire il debug di Java 7 su Windows 8?

Grazie

+0

Avere lo stesso problema; provando davvero ad allontanarci da un'applet ma per ora siamo bloccati e con le nuove build di Win8/Java7 che sono appena arrivate sulle nostre macchine, stiamo riscontrando problemi nel debug di lavoro ... – f1dave

risposta

2

Sto avendo lo stesso problema e può un po 'di luce sulla questione. Non ho ancora una soluzione, motivo per cui sono venuto qui, ma questo potrebbe aiutare a trovare la risposta.

Il problema è nel tempo di esecuzione effettivo avviato da JRE. Se si guarda l'eseguibile nel pannello di controllo Java, sarà javaw.exe. Quindi stai aggiungendo i flag di debug a questo. Se si utilizza Process Explorer per esaminare il processo effettivo che sta eseguendo l'applet, è java.exe. Non so se javaw.exe stia appena generando java.exe per poi morire o cosa, ma i flag non vengono mai passati su java.exe.

Se si passa alla scheda Java nel pannello di controllo, era possibile aggiungervi un altro runtime. Bene, è ancora possibile, ma dopo aver fatto clic su OK, quindi su Applica nella successiva finestra di dialogo, quindi facendo clic di nuovo nella scheda Java, il tempo di esecuzione aggiunto sarà sparito. Nessuna delle impostazioni che ho modificato ha fatto in modo che il plug-in del browser passasse i parametri di runtime, il che rende impossibile eseguire il debug dell'applet nel contesto del browser.

+1

BTW, dovrei ho aggiunto ... Questo è su Windows 7 64-bit. Non penso sia correlato alla versione del sistema operativo, ma piuttosto alla versione di JRE. E nel caso non l'avessi chiarito, non hai bisogno di scherzare con il firewall o altro, o almeno questo non è il problema principale qui. Il problema è che Oracle ha fatto in modo che tu NON possa passare le opzioni della riga di comando sul plugin, intenzionalmente o accidentalmente (più probabilmente quest'ultimo). –

+0

Lo stesso problema qui, stessa configurazione. BTW Spanky e @ user2028936 perché stai provando a eseguire il debug? Da parte mia, ho problemi di firma (avviso di codice misto) su un'applet completamente funzionante e priva di avvisi nelle versioni precedenti di java 7 e 6 ... – Cerber

+0

@Cerber, sto eseguendo il debug di un'applet che utilizziamo per il caricamento dati di imaging medicale. Siamo costretti a utilizzare le applet per due motivi: limitazioni dei dati sandbox con la maggior parte delle tecnologie client e l'applicazione di alcune librerie tecniche di alto livello (dcm4che, le nostre librerie di anonimizzazione dei dati) sui dati prima che vengano caricati nel nostro sistema. Per i problemi di firma, prova a eseguire jarsigner -verbose -verify su tutti i jar nell'applet. Non abbiamo riscontrato problemi di firma nelle versioni JVM recenti, solo questo problema di debug. –

2

Ha fatto ... quasi!

Dato che io sono bloccato l'ho fatto nel modo più duro: sostituito java exe da uno dei miei che ha costretto Java in modalità debug

(si prega di essere gentile questo non è dev alta qualità :))

  • backup il tuo java.exe originale e sostituirlo con questo falso java.
  • non dimenticare di aggiornare exeFile per puntare al tuo java dir
  • non dimenticate di aggiornare stdoutRedirect e stderrRedirect anche
  • opzioni uso di compilazione -static-libgcc -static-libstdc++ per MinGW

fakeJava.exe

#include<iostream> 
#include<stdio.h> 
#include<stdlib.h> 
#include<unistd.h> 
#include<time.h> 
#include<strings.h> 
int main(int givenArgc,char *givenArgv[]) 
{ 
    std::cout<<"step 0.a\n"; 
    char exeFile[] = "c:\\java\\jdk1.7.0_21\\bin\\java.exe"; 
    int prependArgc = 4; 
    char* prependArgv[] = { 
     "-Djava.compiler=NONE", 
     "-Xnoagent", 
     "-Xdebug", 
     "-Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=y" 
    }; 


    std::cout<<"step 0.b\n"; 
    time_t rawtime; 
    struct tm * timeinfo; 
    char date [80]; 

    time (&rawtime); 
    timeinfo = localtime (&rawtime); 

    strftime (date,80,"%Y%m%d%H%M%S",timeinfo); 

    std::cout<<"step 0.c\n"; 
    char stderrRedirect[100]; 
    char stdoutRedirect[100]; 
    sprintf(stderrRedirect,"2>d:\\tmp\\%s-stderr.txt",date); 
    sprintf(stdoutRedirect,">d:\\tmp\\%s-stdout.txt",date); 

    std::cout<<"step 0.d\n"; 
    int appendArgc = 2; 
    char* appendArgv[] = { 
     stderrRedirect, 
     stdoutRedirect 
    }; 

    std::cout<<"step 0.e\n"; 
    int argc = prependArgc+givenArgc-1+appendArgc; 
    char** argv = (char**)malloc(argc*sizeof(char*)); 

    std::cout<<"step 1.a\n"; 
    char** src = prependArgv; 
    int nbItems = prependArgc; 
    int j = 0; 
    for(int i=0;i<nbItems;i++){ 
     argv[j++]=src[i]; 
    } 

    std::cout<<"step 1.b\n"; 
    src = givenArgv; 
    nbItems = givenArgc; 
    for(int i=1;i<nbItems;i++){ 
     argv[j++]=src[i]; 
    } 

    std::cout<<"step 1.c\n"; 
    src = appendArgv; 
    nbItems = appendArgc; 
    for(int i=0;i<nbItems;i++){ 
     argv[j++]=src[i]; 
    } 

    std::cout<<"step 3\n"; 
    char str[4096]; 
    strcpy(str,exeFile); 
    std::cout<<"step 4\n"; 
    for(int i =0;i<argc;i++){ 
     strcat (str," "); 
     strcat (str,argv[i]); 
    } 
    std::cout<<"step 5\n"; 
    std::cout<<"will run : "; 
    std::cout<<str; 

    std::cout<<"\nstep 6\n"; 
    system(str); 
    free(argv); 
    return 0; 
} 
+0

Questo è brutale, @Cerber :) Darò una prova più avanti. Ho finito per ricreare lo stack completo del browser (meno il JSObject) nella configurazione di debug dell'applet IntelliJ. Dolore totale al collo, ma funziona. Nel tentativo di aggirare questo problema, ho completamente integrato Java nel browser sulla mia macchina Windows e posso eseguire solo applet in Firefox su OS X! Posso eseguire il debug in questo punto (è 7u17) ma la JVM si arresta proprio nel punto in cui voglio passare attraverso il mio codice:/ –

+0

@SpankyQuigman prova javaRA per annullare l'installazione: ho creato il mio e il mio solo nel processo di creazione di questo soft : p http://singularlabs.com/software/javara/ – Cerber

1

ho impostato il JAVA_TOOL_OPTIONS ambiente variabile = "- agentlib: JDWP = trasporti = dt_socket, server = y, sospendere = n, indirizzo = 8989", come suggerito nella bug e ha fatto il trucco per me (almeno nel Chrome)

C'è un sacco di bug compilati bug sole database relativo a questo, e sembra che risolto solo in java-8 (B97) Ecco il link al sun-bug che descrivono esattamente lo stesso problema e qui è il posto che è possibile download java-8 (b99 è la build corrente)

Problemi correlati