2012-07-09 7 views
6

Modifica: in base a the Derby community il plug-in Eclipse non verrà gestito né creato automaticamente lungo il progetto Derby.Dove è andato il plug-in Apache Derby Eclipse?

Ma c'è ancora qualcuno che usa questo plug-in? Perché se è così, c'è un posto che pubblica le build reali - che (si spera) potrebbero essere eseguite con Eclipse Juno?

Oppure, se questo è un vero vicolo cieco, quali sono le alternative?


Il problema originale

Utilizzando

  • jdk1.7.0_03
  • Eclipse IDE per Java EE Developers (Win32) versione Juno (costruire dal 2012/06/14)
  • derby-core-plug-in 10.8.2 e -ui-plug-in 1.1.3 (poiché non vi è alcuna eclissi p lugin per l'ultima versione 10.9.1.0)

Problema
Quando si cerca per aggiungere una nuova natura derby (tasto destro del mouse sul progetto Java -> "Apache Derby" -> "Aggiungi Apache Derby della natura") Viene visualizzato solo il seguente messaggio:

Apache Derby Ui Plug-in 
Error adding Derby jars to the project: 
org.eclipse.ui.internal.WorkbenchWindow cannot be cast to 
org.eclipse.jface.window.ApplicationWindow 

Qualche idea?

risposta

4

Il plug-in Derby UI per Eclipse non è stato mantenuto per diversi anni, credo, poiché nessuno dei normali committer Derby utilizza quel plug-in e non ci sono stati volontari dalla comunità per mantenerlo. Quindi penso che funzioni solo con le versioni precedenti di Eclipse.

Sospetto che non sia molto lavoro aggiornarlo per farlo funzionare con l'attuale Eclipse. Se sei interessato a questa funzionalità, sono sicuro che la comunità Derby amerebbe sentirti!

Consulta anche: Is it possible to use derby from apache in Eclipse now that they stopped developing the derby plugin for Eclipse?

+1

Grazie per il suggerimento con la comunità Derby, ora ho trovato qualcosa di utile - anche se non è il risultato che mi aspettavo ... [link] (https://issues.apache.org/jira/browse/DERBY-5272) – Trainbird

5

Apache Derby di db-derby-10.9.1.0-src/Eclipse 4.2.1 (Juno)/Java 7

Una specie di fix. Ha bisogno di più ricerche ma questo funzionerà.

Riferimenti:
db-derby-10.9.1.0-src/BUILDING.html
db-derby-10.8.1.2-src/plugins/eclipse/Readme.txt

Scarica l'Apache Derby fonte zip .
Estrarre lo zip.
Passare alla directory di origine.
db-derby-10.9.1.0-src

Eseguire i seguenti target di formica.
formica -quiet clobber
formica -quiet buildsource
formica buildjars -Tranquillo

costruire il plugin nucleo.
plug formica

Ora dovreste avere un file derby_core_plugin_10.9.1.zip nella directory db-derby-10.9.1.0-src/barattoli/sane.

Nota: l'IDE Eclipse non dovrebbe essere in esecuzione. Estrai il plug-in derby core creato dall'attività plug-in ant antispam e copia il contenuto nella directory dei plugin di Eclipse.

Eseguire Eclipse.

Importare org.apache.derby.ui dall'albero di origine.
(Importa> Generale> progetti esistenti nello spazio di lavoro)

Aprire il file plugin.xml

Nella scheda Panoramica, lievitare il numero di versione diciamo 1.1.4.

Salvare il file.

Il bug (s) sono in ...
1.) pacchetto org.apache.derby.ui.popup.actions.AddDerbyNature.java
2.) pacchetto org.apache.derby.ui.popup .actions.RemoveDerbyNature.java

Dove il metodo .setStatus viene chiamato in queste due unità.


Nota: (dal javadoc di ApplicationWindow)

vuoto org.eclipse.jface.window.ApplicationWindow.setStatus (String message)

Imposta o cancella il messaggio visualizzato in questo la riga di stato della finestra (se ha> uno). Questo metodo non ha effetto se la finestra non ha una riga di stato.

Parametri:
messaggio il messaggio di stato, o nulli per cancellarlo

Quindi supponiamo che l'IDE non ha una linea di stato, in modo da questa chiamata non ha effetto in base al doc Java.

Commenting out these method calls from: 
AddDerbyNature.java 
//((ApplicationWindow) window).setStatus(Messages.ADDING_NATURE); 
//((ApplicationWindow) window).setStatus(Messages.DERBY_NATURE_ADDED); 

RemoveDerbyNature.java 
//((ApplicationWindow)window).setStatus(Messages.REMOVING_NATURE); 
//((ApplicationWindow)window).setStatus(Messages.DERBY_NATURE_REMOVED); 

Test (s):
Esegui come Eclipse Application.

Creare un progetto. Forse chiamalo "org.apache.derby.ui.test".

Fare clic destro sul progetto/Selezionare Aggiungi Apache Derby nature
Nessun errore.

Fare clic destro sul progetto/selezionare Rimuovi Apache Derby nature
Nessun errore.

Aggiungere di nuovo la natura per testare le altre voci di menu.
fare clic destro sul progetto/Selezionate Aggiungi Apache Derby natura

Fare clic destro sul progetto/Selezionare Start Derby Network Server
Nessun errore, è stato avviato server.

Dal log della console ... dom 27 gen. 17:51:29 EST 2013: gestore sicurezza installato utilizzando la politica di sicurezza del server di base. Dom 27 Gen 17:51:29 EST 2013: Apache Derby Network Server - 10.9.1.0 - (directory sotto controllo di versione) avviato e pronto ad accettare connessioni sulla porta 1527

Nota: Non sono sicuro che cosa significa il messaggio di directory sotto controllo di versione

Fare clic destro sul progetto/selezionare Arresta il server di rete Derby
Nessun errore, il server è stato arrestato.
Dom 27 Gen 17:53:32 EST 2013: Apache Derby Network Server - 10.9.1.0 - (directory sotto controllo di versione) di spegnimento

Avviare il server di back up ...
Fare clic destro sul progetto/Selezionare Start Derby Network Server

creare una cartella sql.
creare un file test.sql

il mio file di prova SQL.

connect 'jdbc:derby://localhost:1527/TESTDB;create=true;user=test;password=test;'; 
-- drop User Indexes - ignore error if first time creating 
drop index UserNameIdx1; 
-- drop the table if it exists - ignore error if first time creating 
drop table TEST_USER; 
-- create the table 
create table TEST_USER ( 
    ID integer generated by default as identity, 
    USER_NAME varchar(255) not null, 
    FIRST_NAME varchar(255), 
    LAST_NAME varchar(255), 
    PASSWORD varchar(255), 
    ENABLED integer, 
    CREATED_STAMP timestamp, 
    CREATED_TX_STAMP timestamp, 
    LAST_UPDATED_STAMP timestamp, 
    LAST_UPDATED_TX_STAMP timestamp, 
    constraint TEST_USER_PK primary key (ID) 
); 
-- insert some data -- oops --- will mess with the ID generator, see the alter table restart line below. 
insert into TEST_USER values(0, 'admin','admin','admin','admin',1,'2013-01-18 12:00:00.000','2013-01-18 12:00:00.000','2013-01-18 12:00:00.000','2013-01-18 12:00:00.000'); 
-- make the USER_NAME unique 
create unique index UserNameIdx1 on TEST_USER(USER_NAME); 
-- reset the generator 
alter table TEST_USER alter column ID restart with 1; 

clic destro sul file> Apache Derby> Esegui script SQL utilizzando 'ij'

Refesh il progetti di lavoro, ora ci dovrebbe essere una cartella TESTDB.

Il database è stato creato. Ok.

Creare un file zip.

clic destro del mouse sul progetto> Esporta

Cliccare su plug-in per lo sviluppo> Deplyable plug-in e frammenti.
Destinazione Tab file di
archivio
/derby_ui_plugin_1.1.4-fix.zip
Scheda Opzioni
plugin Deseleziona pacchetto come singoli archivi JAR

fare clic su Fine.

Chiudi/Esci dall'istanza di test.
Exit Eclipse.

Estrai lo zip appena creato.

Copia il suo contenuto nella directory plugins nella directory dei plugin Eclipse (Juno).

Riavvia Eclipse. Crea un nuovo progetto.

Dovresti essere in grado di installare una natura Apache Derby (10.9.1) sui tuoi progetti.

Nota: se lo hai creato con Java 7, non aspettarti che funzioni per una versione JVM minore.

+0

Ora, QUESTO è una soluzione alternativa. Grazie per aver condiviso questo con me, proverò che se ne avrò bisogno di nuovo;) – Trainbird

+0

Grazie, questo ha funzionato anche per me su Derby 10.10.1.1 con Eclipse 4.3 e Java 7. L'unica cosa che ho avuto problemi era che io necessario installare PDE --Plug-in Development Environment per "eseguire come Eclipse Application". Potrebbe essere qualcosa di ovvio, ma mi ci è voluto un po '(e un po' di frustrazione) per capirlo, quindi ho pensato che potrei aggiungere al tuo post. – NigoroJr