jxbrowser错误The Chromium profile directory is already used/locked by another BrowserContext instance

灰太狼 2022-03-17 02:06 497阅读 0赞

一、问题描述

在JAVA FX中使用jxbrowser,第一次打开一个窗口,然后又打开一个窗口就出现如下错误:

  1. Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
  2. at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
  3. at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
  4. at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
  5. at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
  6. at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
  7. at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
  8. at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
  9. at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
  10. at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
  11. at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
  12. at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
  13. at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
  14. at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
  15. at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
  16. at javafx.event.Event.fireEvent(Event.java:198)
  17. at javafx.scene.Node.fireEvent(Node.java:8413)
  18. at javafx.scene.control.Button.fire(Button.java:185)
  19. at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
  20. at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
  21. at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
  22. at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
  23. at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
  24. at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
  25. at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
  26. at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
  27. at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
  28. at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
  29. at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
  30. at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
  31. at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
  32. at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
  33. at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
  34. at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
  35. at javafx.event.Event.fireEvent(Event.java:198)
  36. at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
  37. at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
  38. at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
  39. at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
  40. at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:381)
  41. at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
  42. at java.security.AccessController.doPrivileged(Native Method)
  43. at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417)
  44. at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
  45. at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
  46. at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
  47. at com.sun.glass.ui.View.notifyMouse(View.java:937)
  48. at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
  49. at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
  50. at java.lang.Thread.run(Thread.java:748)
  51. Caused by: java.lang.reflect.InvocationTargetException
  52. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  53. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  54. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  55. at java.lang.reflect.Method.invoke(Method.java:498)
  56. at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
  57. at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
  58. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  59. at java.lang.reflect.Method.invoke(Method.java:498)
  60. at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
  61. at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771)
  62. ... 48 more
  63. Caused by: javafx.fxml.LoadException:
  64. /D:/xxxx/xxxx/analysis/target/classes/jxbrowser.fxml
  65. at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
  66. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)
  67. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
  68. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
  69. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
  70. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
  71. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
  72. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
  73. at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
  74. at com.fendo.analysis.AnalysisController.openJxBrowser(AnalysisController.java:251)
  75. ... 58 more
  76. Caused by: com.teamdev.jxbrowser.chromium.BrowserException: The Chromium profile directory is already used/locked by another BrowserContext instance or process.
  77. at com.teamdev.jxbrowser.chromium.Browser.<init>(SourceFile:216)
  78. at com.teamdev.jxbrowser.chromium.Browser.<init>(SourceFile:184)
  79. at com.teamdev.jxbrowser.chromium.Browser.<init>(SourceFile:151)
  80. at com.fendo.analysis.jxbrowser.JxBrowserController.initialize(JxBrowserController.java:51)
  81. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
  82. ... 66 more

代码如下:

  1. BrowserContextParams params = new BrowserContextParams("D:\\IDEA_work\\javafx\\jxbrowser\\cookie");
  2. BrowserContext context = new BrowserContext(params);
  3. Browser browser = new Browser(context);
  4. BrowserView view = new BrowserView(browser);
  5. JFrame frame = new JFrame();
  6. frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  7. frame.add(view, BorderLayout.CENTER);
  8. frame.setSize(800, 600);
  9. frame.setLocationRelativeTo(null);
  10. frame.setVisible(true);
  11. browser.loadURL("https://www.baidu.com");
  12. CookieStorage cookieStorage = browser.getCookieStorage();
  13. // Create and add new cookie
  14. int oneHourInMilliseconds = 36000000;
  15. int microsecondsOffset = 1000;
  16. // Cookie will be alive during one hour starting from now
  17. long expirationTimeInMicroseconds = (System.currentTimeMillis() +
  18. oneHourInMilliseconds) * microsecondsOffset;
  19. // cookieStorage.setCookie("http://www.baidu.com", "mycookie", "myvalue",
  20. // ".baidu.com", "/", expirationTimeInMicroseconds, false, false);
  21. List<Cookie> cookies = cookieStorage.getAllCookies();
  22. for (Cookie cookie : cookies) {
  23. System.out.println("cookie = " + cookie);
  24. }

二、解决方法

这是由于浏览器使用相同配置文件目录造成的,也就是上面的BrowserContext,多次初始化时,使用的都是BrowserContext这一个用的是同一个目录。官网提供了一个解决方法:https://jxbrowser.support.teamdev.com/support/solutions/articles/9000012878-creating-browser

多个窗口浏览时,初始化Browser时使用不同的目录就行了。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE3ODE1MjE_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE3ODE1MjE_size_16_color_FFFFFF_t_70 1

发表评论

表情:
评论列表 (有 0 条评论,497人围观)

还没有评论,来说两句吧...

相关阅读