2011-03-04 149 views
50

我試圖按照此說明嵌入運行門設置系統屬性

它說:「系統屬性gate.home應設置爲門安裝目錄。」 (http://gate.ac.uk/wiki/code-repository/)

我該怎麼做?

此外,當我嘗試運行EmbeddedAnnie的示例代碼時,出現以下錯誤: (我不知道它是否相關)。

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 

泰德。

回答

104

你可以通過幾種方法做到這一點。

一個是當你運行你的應用程序,你可以通過它一個標誌。

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

還是一段代碼,需要這個屬性集編程之前在代碼中設置它。對於System寬配置,Java保留Properties對象。

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

+1 - 但是,以編程方式設置系統屬性的問題在於,您需要儘早做到這一點;即在「門」代碼使用屬性值之前。 – 2011-03-04 05:16:26

+1

@StephenC,是的,就像設置'java.system.class.loader'等。 – Pacerier 2014-08-23 10:22:59

+0

@Prier - 這是一個屬性的例子,* only *在從命令行設置時起作用。 – 2014-08-23 15:06:44

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

之後,你可以通過調用

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

請解釋一下。 – Lakshmi 2014-03-19 11:55:07

1

你需要你的地方GATE安裝的插件目錄的路徑。因此,如果安裝在「/home/user/GATE_Developer_8.1」門,代碼如下:

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

您不必在命令行設置gate.home。您可以在您的應用程序中設置它,只要您在調用Gate.init()之前設置它即可。