95 votes

Comment définir la propriété du système ?

J'essaie de suivre cette instruction pour exécuter la porte intégrée.

Il est dit : "La propriété système gate.home doit être définie sur le répertoire d'installation de gate." ( http://gate.ac.uk/wiki/code-repository/ )

Comment dois-je m'y prendre ?

De plus, lorsque j'essaie d'exécuter le code d'exemple de EmbeddedAnnie, j'obtiens l'erreur suivante : ( Je ne sais pas si c'est lié ou non ).

Initialising GATE...
GATE home system property ("gate.home") not set.
Attempting to guess...
Using "C:\Program Files (x86)\GATE-6.0" as GATE Home.
If this is not correct please set it manually using the -Dgate.home option in yo
ur start-up script
Using C:\Program Files (x86)\GATE-6.0 as GATE home
Using C:\Program Files (x86)\GATE-6.0\plugins as installed plug-ins directory.
Using C:\Program Files (x86)\GATE-6.0\gate.xml as site configuration file.
Using C:\Users\UNST\gate.xml as user configuration file
Using C:\Users\UNST\gate.session as user session file
Exception in thread "main" java.lang.NoClassDefFoundError: gate/creole/gazetteer
/AbstractGazetteer
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
1)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:296)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:296)
        at gate.util.GateClassLoader.loadClass(GateClassLoader.java:63)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at gate.creole.CreoleAnnotationHandler.processAnnotationsForResource(Cre
oleAnnotationHandler.java:193)
        at gate.creole.CreoleAnnotationHandler.processAnnotations(CreoleAnnotati
onHandler.java:169)
        at gate.creole.CreoleAnnotationHandler.processAnnotations(CreoleAnnotati
onHandler.java:173)
        at gate.creole.CreoleAnnotationHandler.processAnnotations(CreoleAnnotati
onHandler.java:173)
        at gate.creole.CreoleAnnotationHandler.processAnnotations(CreoleAnnotati
onHandler.java:157)
        at gate.creole.CreoleRegisterImpl.processFullCreoleXmlTree(CreoleRegiste
rImpl.java:358)
        at gate.creole.CreoleRegisterImpl.parseDirectory(CreoleRegisterImpl.java
:341)
        at gate.creole.CreoleRegisterImpl.registerDirectories(CreoleRegisterImpl
.java:306)
        at gate.Gate.initCreoleRepositories(Gate.java:449)
        at gate.Gate.init(Gate.java:230)
        at StandAloneAnnie.main(StandAloneAnnie.java:69)
Caused by: java.lang.ClassNotFoundException: gate.creole.gazetteer.AbstractGazet
teer
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        ... 27 more

162voto

birryree Points 29165

Vous pouvez le faire de plusieurs façons.

La première est que lorsque vous exécutez votre application, vous pouvez lui passer un drapeau.

java -Dgate.home="http://gate.ac.uk/wiki/code-repository" your_application

Vous pouvez aussi la définir de manière programmatique dans le code avant la partie du code qui a besoin de cette propriété. Java conserve un Properties pour System configuration large.

Properties props = System.getProperties();
props.setProperty("gate.home", "http://gate.ac.uk/wiki/code-repository");

17 votes

+1 - cependant, le problème avec le réglage d'une propriété système par programme est que vous devez le faire suffisamment tôt, c'est-à-dire avant que le code de la "porte" utilise la valeur de la propriété.

1 votes

@StephenC, Yea, comme la mise en place java.system.class.loader etc.

0 votes

@Pacerier - C'est un exemple d'une propriété qui sólo fonctionne lorsqu'elle est définie à partir de la ligne de commande.

67voto

Matthew Flaschen Points 131723
System.setProperty("gate.home", "/some/directory");

Pour plus d'informations, voir :

0 votes

Je dois donc faire ça dans la fonction principale ?

0 votes

@Flethuseo, oui, cela devrait suffire pour une application simple.

7voto

Shree Points 176
System.setProperty("gate.home", "/some/directory"); 

Après cela, vous pouvez récupérer sa valeur plus tard en appelant

String value =  System.getProperty("gate.home");

1 votes

Veuillez expliquer également.

7voto

Luiz valença Points 71

Pour JBoss dans le fichier standalone.xml, mettez après .

<extensions>
</extensions>

<system-properties>
    <property name="my.project.dir" value="/home/francesco" />
</system-properties>

Pour l'éclipse :

http://www.avajava.com/tutorials/lessons/how-do-i-set-system-properties.html?page=2

0 votes

J'ai fait tout le chemin pour cela ! D'une certaine manière, dans JBoss, les autres endroits où nous définissons la propriété du système ne fonctionnent pas.

6voto

Jerry K. Points 101

Vous avez besoin du chemin du répertoire des plugins de votre installation locale de GATE. Ainsi, si Gate est installé dans "/home/user/GATE_Developer_8.1", le code ressemble à ceci :

System.setProperty("gate.home", "/home/user/GATE_Developer_8.1/plugins");

Il n'est pas nécessaire de définir gate.home à partir de la ligne de commande. Vous pouvez le définir dans votre application, à condition de le faire AVANT d'appeler Gate.init().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X