2012-04-04 7 views
1

Ich habe es geschafft, eine funktionierende Anwendung zu brechen, und kann nicht herausfinden, wie es zu beheben ist.Wie kann ich kopflose Grafikumgebung auf Windows7 ausschalten

Ich habe einen Java-Web-App, die auf einer Windows7 Box aus Eclipse (Frühjahr STS-Version.) Auf "tc Server" laufen

Die App java.awt.Robot verwendet eine Bildschirmaufnahme durchzuführen, und zeigen Sie das aufgenommene Bild auf der folgenden Seite an.

So weit so gut, und ich konnte eine gepufferteImage vom Bildschirm sammeln und auf einer nachfolgenden Seite innerhalb der Web-App anzeigen.

Und dann brach ich irgendwie die Web-App, möglicherweise laden die Android SDK und Eclipse-Tools.

Jetzt bekomme ich eine Ausnahme von Robot, weil es nicht in einer HeadlessEnvironment ausgeführt werden kann. Google-Suchanfragen zeigen, dass eine headlessEnvironment für den Betrieb ohne Bildschirm und Tastatur ist, aber ich habe beide. Die Anwendung funktionierte bisher, ohne jemals auf HeadlessEnvironment zu stoßen.

Wenn ich debuggen und die GraphicsEnvironment anzeigen;

GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); 

Ich bekomme ein HeadlessGraphicsEnvironment Objekt auf der Basis eines Win32GraphicsEnvironment.

während:

String nm = java.security.AccessController.doPrivileged 
(new sun.security.action.GetPropertyAction("java.awt.graphicsenv", null)); 
System.out.println("java.awt.graphicsenv = " + nm); 

java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment 

Mein armes Upgrade auf Android mich ursprünglich führte gibt das Upgrade zu verlassen und das neueste Springsource Tool-Set neu installieren. Dies ist auf das HeadlessEnvironment-Problem gestoßen, daher habe ich wieder auf meine ursprüngliche Version von Eclipse zurückgegriffen, die nun auch das gleiche Problem hat.

Ich fühle mich jetzt ziemlich fest, und da die meisten Suchen mir sagen, wie ich den Headless-Modus einschalten kann, kann mir jemand erklären, wie man den Headless-Modus wieder abschaltet?

Vielen Dank!

< ------------- EDIT: Stapel Trace hinzugefügt --------------------------- --------------------------->

05-Apr-2012 18:42:51 org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [viewerServlet] in context with path [/WebView] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: java.awt.AWTException: headless environment] with root cause 
java.awt.AWTException: headless environment 
at java.awt.Robot.<init>(Robot.java:75) 
at uk.co.fred.MSWindowsHandler.WindowHandlerUtilities.setupRobot(WindowHandlerUtilities.java:191) 
at uk.co.fred.MSWindowsHandler.WindowHandlerUtilities.scanWindow(WindowHandlerUtilities.java:71) 
at uk.co.fred.Scanner.ScanServiceImpl.scanScreenToBufferedImage(ScanServiceImpl.java:66) 
at uk.co.fred.viewer.controller.scan.control.ScanControlController.postPage_control_Scan(ScanControlController.java:57) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) 
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at com.springsource.insight.collection.tcserver.request.HttpRequestOperationCollectionValve.traceNextValve(HttpRequestOperationCollectionValve.java:112) 
at com.springsource.insight.collection.tcserver.request.HttpRequestOperationCollectionValve.invoke(HttpRequestOperationCollectionValve.java:94) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:279) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 
+0

Wir brauchen den Stack-Trace youre zu sehen! – davidfrancis

+0

OK, kein Problem. Die ursprüngliche AWT-Ausnahme wurde zuvor abgefangen, aber ich habe sie zur besseren Übersichtlichkeit als runtimeException geworfen. – user582011

Antwort

2

Problem behoben: Innerhalb der Server Startkonfiguration innerhalb von Eclipse gibt es eine Reihe von Konfigurationsparametern, die die Anweisung enthalten:

-Djava.awt.headless=true 

durch einen anderen Server-Konfiguration in Eclipse erstellen und die Auswahl eines " Base "Typ statt einer" Insight "Art von tc Server-Instanz, konnte ich eine nicht Headless-Umgebung bekommen.

Es schien wie der „Insight“ Typ für tc Server auf einer Headless-Laufzeitumgebung bestehen (obwohl ich nicht weiter untersuchen habe.)

+0

Wenn Sie in diese Stack-Ablaufverfolgung, die Sie angegeben haben (in F3 in Eclipse), bohren, können Sie GraphicsEnvironment.getHeadlessProperty sehen, das diese Systemeigenschaft (-D) überprüft. Ich würde das vorschlagen, aber es war zu spät. Gut gemacht, um es zu lösen und +1, um es hier weiter zu verfolgen! – davidfrancis

1

da Sie "Web-App" erwähnt, funktioniert die App-Server laufen als ein Windows-Dienst? Wenn Sie sich in den Diensten befinden, gibt es ein Kontrollkästchen "Mit Desktop interagieren", das Ihr Symptom verursachen kann.

enter image description here

+0

Hallo Chuck, leider läuft der App-Server nicht als Windows-Dienst. Gute Idee, und danke für den Vorschlag. – user582011

Verwandte Themen