簡體   English   中英

Glassfish4:如何在默認glassfish derby目錄之外的JDK8中加載外部derby數據庫?

[英]Glassfish4: How to load external derby database in JDK8 outside default glassfish derby directory?

我安裝了JDK8.0 beta以及Netbeans8 Beta + Glassfish4.0

缺省情況下,glassfish和JavaDB Server使用此位置來設置新的derby數據庫: C:\\Users\\user\\.netbeans-derby

當我嘗試將JavaDB數據庫位置更改為類似的內容時: G:\\DerbyDatabases

並重新啟動JavaDB Server,然后發生此錯誤,無法再次啟動derby服務器

org.apache.derby.impl.drda.NetworkServerControlImpl的java.lang.Class.forName0(本機方法)處的java.lang.Class.forName(Class.java:259)處的線程“ main”中的java.lang.ExceptionInInitializerError org.apache.derby.impl.drda的.startNetworkServer(未知源)org.apache.derby.impl.drda的.startNetworkServer(未知源)org.apache.derby.drda的NetworkServerControlImpl.executeWork(未知源) .NetworkServerControl.main(未知源)原因:java.lang.ClassCastException:無法將org.apache.derby.iapi.services.io.FileUtil.limitAccessToOwnerViaACLs上的java.nio.file.AccessDeniedException強制轉換為java.lang.RuntimeException org.apache.derby.iapi.services.io.FileUtil.limitAccessToOwner(未知源),位於org.apache.derby.impl.services.stream.SingleStream.PBmakeFileHPW(未知源),位於org.apache.derby。在org.apache的java.security.AccessController.doPrivileged(本機方法)處的impl.services.stream.SingleStream.run(未知源) org.apache.derby.impl.services.stream.SingleStream.createDefaultStream(未知源)位於org.apache.derby.impl.services.stream.SingleStream處的.derby.impl.services.stream.SingleStream.makeFileHPW(未知源) org.apache.derby.impl.services.stream.SingleStream.boot(未知源)位於org.apache.derby.impl.services.stream.org.apache.derby.impl.services.monitor.BaseMonitor.boot(未知源) org.apache.derby.impl.services.monitor.BaseMonitor.startModule(未知源)(位於org.apache.derby.iapi.services.monitor.Monitor處的.derby.impl.services.monitor.TopService.bootModule(未知源) org.apache.derby.impl.services.monitor.BaseMonitor.runWithState(未知源)的org.apache.derby.impl.services.monitor.FileMonitor.org.apache.startSystemModule(未知源)。 org.apache.derby.iapi.jdbc.JDBCBoot.boot(未知源)位於org.apache.derby.jdbc.EmbeddedDriver.boot(未知源)位於derby.iapi.services.monitor.Monitor.startMonitor(未知源) org.apa che.derby.jdbc.EmbeddedDriver。(未知來源)...還有6個

我認為這是因為我的Jre8策略設置,但是我不知道如何解決,所以這是我當前的java.policy文件內容,可能會有所幫助:

//默認情況下,標准擴展獲取所有權限

授予codeBase“ file:$ {{{java.ext.dirs}} / *” {權限java.security.AllPermission; };

//授予所有域的默認權限

grant {// //允許任何線程使用不帶參數的java.lang.Thread.stop()//方法停止自身。 //請注意,默認情況下僅授予此權限以保持向后兼容。 //強烈建議您從此策略文件中刪除此權限//或將其進一步限制為指定的代碼源//,因為Thread.stop()可能不安全。 //有關更多信息,請參見java.lang.Thread.stop()的API規范。 權限java.lang.RuntimePermission“ stopThread”;

  // allows anyone to listen on dynamic ports permission java.net.SocketPermission "localhost:0", "listen"; // "standard" properies that can be read by anyone permission java.util.PropertyPermission "java.version", "read"; permission java.util.PropertyPermission "java.vendor", "read"; permission java.util.PropertyPermission "java.vendor.url", "read"; permission java.util.PropertyPermission "java.class.version", "read"; permission java.util.PropertyPermission "os.name", "read"; permission java.util.PropertyPermission "os.version", "read"; permission java.util.PropertyPermission "os.arch", "read"; permission java.util.PropertyPermission "file.separator", "read"; permission java.util.PropertyPermission "path.separator", "read"; permission java.util.PropertyPermission "line.separator", "read"; permission java.util.PropertyPermission "java.specification.version", "read"; permission java.util.PropertyPermission "java.specification.vendor", "read"; permission java.util.PropertyPermission "java.specification.name", "read"; permission java.util.PropertyPermission "java.vm.specification.version", "read"; permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; permission java.util.PropertyPermission "java.vm.specification.name", "read"; permission java.util.PropertyPermission "java.vm.version", "read"; permission java.util.PropertyPermission "java.vm.vendor", "read"; permission java.util.PropertyPermission "java.vm.name", "read"; 

權限java.net.SocketPermission“ localhost:1527”,“ listen,resolve”;
權限java.sql.SQLPermission“ deregisterDriver”; };

問候,

我相信您已經遇到了DERBY-6410: https : //issues.apache.org/jira/browse/DERBY-6410

問題是您的“ G:\\”路徑已使用Windows“ subst”命令定義: https//www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/subst。 mspx?mfr = true

Java的IO實用程序類中存在一些錯誤,在訪問這種替代路徑時會導致Derby問題。

您現在必須找到一種解決方法,因為該Derby問題似乎尚未修復。

您可以為數據庫使用其他文件系統,而無需使用subst創建路徑嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM