2013-06-06 11 views
13

Questa mattina mi sono imbattuto in un brutto problema che mi è costato parecchie ore cercando di rintracciarlo. Avevo ereditato del codice con due progetti NetBeans, A e B. Entrambi compilano ed eseguono con successo; non ci sono complicate attività di compilazione di formiche; solo l'impostazione IDE predefinita.Perché NetBeans non riesce a trovare CopyLibs per alcuni dei miei progetti?

Questi due progetti condividono una grande quantità di codice, quindi l'ho preso in considerazione in un nuovo terzo progetto, Common. Dopo aver risolto i riferimenti e così via, NetBeans non segnala errori. Tutto sembra a posto. Costruisco il progetto Common senza intoppi. Allora le cose diventano strane.

Improvvisamente, quando cerco di costruire progetti e AB, hanno compilano bene - ma alla fine della accumulo, ognuno rompe con lo stesso errore:

Copying 1 file to C:\Projects\projectName\build 
C:\Projects\projectName\nbproject\build-impl.xml:723: The following error occurred while executing this line: 
C:\Projects\projectName\nbproject\build-impl.xml:543: taskdef class org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs cannot be found 
using the classloader AntClassLoader[] 
BUILD FAILED (total time: 3 seconds) 

Tutto i file .class vengono visualizzati in build/classes e tutto il resto sembra essere andato liscio, ma non è possibile accedere alla cartella dist. Così inizia la mia ricerca di problemi CopyLibs.

persone hanno suggerito facendo in modo che org-netbeans-modules-java-j2seproject-copylibstask.jar è stato fatto riferimento in modo corretto nel file project.properties (era), e nel file <userhome>/.netbeans/version/build.properties pure (era). La libreria fa esiste in tutti i posti a cui viene fatto riferimento; infatti, NetBeans sembra posizionare una copia di questo jar nella cartella ./lib di tutti i progetti Java per impostazione predefinita. Ho provato a realizzare progetti nuovi di zecca e a portare manualmente le fonti, senza risultato. Ero disorientato.

sto postando qui nella speranza che:

  • Forse qualcuno mi può dare una certa comprensione in come questo è accaduto in primo luogo e come evitarlo.
  • Forse qualcuno può dirmi perché solo alcuni progetti si rompono, anche se tutti hanno esattamente lo stesso file project.properties o sono nuovi di zecca.
  • Le persone con questo problema in futuro avranno un momento migliore.

risposta

20

La soluzione più vicina che ho trovato online è this link, che include solo una soluzione parziale. Seguendo le istruzioni in questo post non sarà risolvere il problema, perché lascia alcune cose importanti. Ecco la soluzione alla fine alla quale sono incappato.

in NetBeans, entra qui:

Tools > Options > Miscellaneous > Ant 

Nella parte inferiore della finestra, c'è una casella Properties. Incollare nel seguente:

libs.CopyLibs.classpath=C\:\\Program Files\\NetBeans 7.1\\java\\ant\\extra\\org-netbeans-modules-java-j2seproject-copylibstask.jar 

Sostituire NetBeans 7.1 con il percorso di installazione vero e proprio. Questo è tutto ciò che c'è da fare! La cosa che lo rende difficile è che NetBeans sembra fare un po 'di analisi del testo in questo campo quando si fa clic su OK.Nello specifico, tratta i backslash come escape e anche a volte aggiunge barre retroverse.

è per questo che mi ha portato così a lungo per trovare: ho provato la soluzione nel link (ad es C:\Program Files\Netbeans, ecc), e non ha funzionato, ma poi sono tornato in questa finestra per scoprire questo: C\:Program Files etc. "Oh!" Ho pensato, "Ho appena sbagliato tutto! Che sciocco sono!" Quindi l'ho "corretto" su C:\ e provato di nuovo, ancora senza successo. Si scopre che NetBeans aggiunge una barra rovesciata per evitare :, ma eliminerà qualsiasi altro singolo backslash che trova qui.

Ancora non so perché questo è successo in primo luogo, o perché sembra solo influenzare determinati progetti.

+0

Appena avuto lo stesso problema, qualcuno sa perché sta accadendo? – 1392023093user

+0

In NetBeans 8.0.2 è Strumenti> Java> Ant, più simile alla schermata per 7.3 nella risposta di James. – jla

+0

Per ottenere una correzione all'esterno di netbeans, aggiungere questa riga a 'C: \ Users \ nomeutente \ AppData \ Roaming \ NetBeans \ x.y.z \ build.properties'. – Jus12

5

Avevo NetBeans 7.1.2 sul mio Mac, disinstallato e quindi installato 7.3.1. Ho avuto gli stessi errori. Ecco quello che ho dovuto fare per riparare: Vai

NetBeans menu > Preferences > Java tab > Ant subtab > Properties

ho notato che le proprietà avevano ancora il vecchio numero per l'applicazione, quindi ho dovuto cambiare il 7.1.2 a 7.3.1, e poi ha funzionato .

enter image description here

Grazie per avermi messo sulla strada giusta!

+0

Sì, questa è la soluzione. Ogni volta che installi di nuovo Netbeans, mi imbatto in questo problema e poi imbattersi in questa risposta per risolverlo: D – CodedMonkey

+0

Questa dovrebbe essere la risposta giusta. Salvami diverse ore. Per un'altra versione di Netbeans, sostituirla con la versione. – Jus12

+0

Questo dovrebbe essere contrassegnato come la risposta corretta. – Subash

0

Il problema per la mia configurazione si è rivelato essere in un progetto che ho incluso come libreria. Aveva ancora la cartella CopyLibs-2 e non la cartella CopyLibs aggiornata ma i nblibraries.properties disponevano della roba aggiornata di libs.CopyLibs. Non so come attivare l'aggiornamento così invece ho fatto la seguente:

  1. eliminata lib/CopyLibs-2
  2. destro cliccato la cartella Biblioteche e ha scelto Aggiungi libreria.
  3. importate CopyLibs Task
  4. Aggiunto CopyLibs Task biblioteca

Ciò ha reso CopyLibs appaiono nella mia cartella librerie che sembrava un po 'strano perché è normalmente nascosto come la jnlp uno è, ma ha funzionato senza avere il mondiale libs.CopyLibs.classpath impostato su Strumenti> Java> Proprietà Ant.

Sono stati necessari alcuni tentativi per eliminare le cose nel modo giusto e aggiungerle. A volte aggiungerebbe ma mostrerà un problema e il messaggio di risoluzione sarebbe "Libreria" CopyLibs ha elementi mancanti "e" Problema: il progetto utilizza la libreria di classi chiamata "CopyLibs" ma mancano gli elementi classpath di questa libreria ". Non capisco perché l'intero processo sia così pignolo e magico.

Ho anche notato sul commit che l'IDE aveva aggiornato i miei project.properties cambiare javac.classpath dal nulla a $ {} libs.CopyLibs.classpath

0

Informazione: Le proprietà Ant si svolgono nella build. file di proprietà in una directory utente. Questo varia a seconda della piattaforma, ma può essere trovato cercando nel file nbproject/private/private.properties. Poi guarda il percorso sotto user.properties.file e dai un'occhiata al file puntato su - puoi vedere i percorsi usati nella build Ant - e se sono corretti.