Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jetty在Android中在外部java库(也称为jar文件)中设置资源库_Java_Android_Jetty - Fatal编程技术网

jetty在Android中在外部java库(也称为jar文件)中设置资源库

jetty在Android中在外部java库(也称为jar文件)中设置资源库,java,android,jetty,Java,Android,Jetty,我成功地在Android上部署了jetty 7嵌入式服务器。问题是我无法将其设置为访问我的jar文件中的文件夹(jar文件在PC上运行良好,并且具有自包含的依赖项,在Android上作为外部库添加)。我希望将此文件夹设置为我的嵌入式web应用程序的resourceBase 这是完整的代码 System.out.println(" server init attempt on port:"+curPort); ServletContextHandle

我成功地在Android上部署了jetty 7嵌入式服务器。问题是我无法将其设置为访问我的jar文件中的文件夹(jar文件在PC上运行良好,并且具有自包含的依赖项,在Android上作为外部库添加)。我希望将此文件夹设置为我的嵌入式web应用程序的resourceBase

这是完整的代码

            System.out.println(" server init attempt on port:"+curPort);
            ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
            Server server = new Server(curPort);
            server.setHandler(context);
            context.setContextPath("/");         
            System.out.println(" servlet main initing");
            DSSServer servlet = new DSSServer();
            context.addServlet(new ServletHolder(servlet), "/DSS");
            ResourceHandler res = new ResourceHandler();
            System.out.println(" getting resBase:");
            //[code above works fine]

            //[!ATTENTION HERE!]
            String resDir = "/dss_core/HTML5/webapp";
            //This runs on PC fine but creates a null pointer exception in Android
            String resurl = DSSServer.class.getResource(resDir).toExternalForm();
            //Here is another non-working varient
            //String resurl = servlet.getClass().getClassLoader().getResource(resDir).toExternalForm();

            //[code below works fine]
            res.setResourceBase(resurl);
            res.setDirectoriesListed(true);
            context.setHandler(res);
            System.out.println(" servlet main inited");  
这是导致空指针异常的代码块

            String resDir = "/dss_core/HTML5/webapp";
            //This runs on PC fine but creates a null pointer exception in Android
            String resurl = DSSServer.class.getResource(resDir).toExternalForm();
            //Here is another non-working variant
            //String resurl = servlet.getClass().getClassLoader().getResource(resDir).toExternalForm();
在Android中访问外部java库资源文件夹的正确方法是什么?我知道Android有自己的资源管理系统,但我不能将本机Android代码放在外部java库中,因为它是专门用于PC的jar文件

我可以做的另一种方法是将我的资源库提取到本地文件夹,但我不希望这样做,因为它会留下大量临时文件

顺便说一句,Android从我的java库中一次访问一个文件没有问题

            //Accessing individual files work on Android 
            InputStream input = DatabaseManager.class.getResourceAsStream("/h2db.mv.db");

这似乎是不可能的,我最终在Android的某个地方提取了文件(比如/mnt/sdcard/.myApp/temp),并手动复制那里的每个文件

String resDir = "/dss_core/HTML5/webapp";
String resurl = dss_core.util.DRYcode.platformIsAndroid()?"file:/mnt/sdcard/protected/"+servletName:
                DRYcodeWeb.class.getResource(resDir).toString();
if (dss_core.util.DRYcode.platformIsAndroid())
    for (String str:resourceList)
        DRYcode.copy_("/dss_core/HTML5/webapp/"+str,"/mnt/sdcard/protected/"+servletName+"/"+str);

在尝试在Android上使用外部java库之前,您是否对其进行了加密?(或者是
art
-ify now?)是的,只有jetty7可以被索引,而且在IOS(roboVM)中也有这样的成功案例,Jetty8和Jetty9不能被索引,所以我被jetty7困住了。看起来我将回答我自己的问题,稍后我会更新这个