How to Set System Property?

How to Set System Property?

I am trying to follow this instruction for running gate embedded.

It says: "System property gate.home should be set to the gate installation directory." ()

How do I do this?

Also when I try to run the example code of EmbeddedAnnie I get the following error: ( I don't know if it is related or not ).

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

5 Answers

You can do this via a couple ways.

One is when you run your application, you can pass it a flag.

java -Dgate.home="" your_application

Or set it programmatically in code before the piece of code that needs this property set. Java keeps a Properties object for System wide configuration.

Properties props = System.getProperties();
props.setProperty("gate.home", "");
7
System.setProperty("gate.home", "/some/directory");

For more information, see:

2
System.setProperty("gate.home", "/some/directory"); 

After that you can retrieve its value later by calling

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

For JBoss, in standalone.xml, put after .

<extensions>
</extensions>

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

For eclipse:

1

You need the path of the plugins directory of your local GATE install. So if Gate is installed in "/home/user/GATE_Developer_8.1", the code looks like this:

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

You don't have to set gate.home from the command line. You can set it in your application, as long as you set it BEFORE you call Gate.init().

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Marcus Vance
Author

Marcus Vance

Marcus Vance is a cybersecurity auditor and technology writer dedicated to educating the public about online safety, data privacy regulations, enterprise security, and emerging cyber threats.