0
我已成功在Android上部署jetty 7嵌入式服务器问题是我无法将其设置为访问我的文件夹jar文件(jar文件在PC上完美运行,并具有自包含的依赖关系,它在android上作为外部库添加)。我希望将此文件夹设置为resourceBase我的嵌入式web应用程序jetty在Android中的外部Java库(又名jar文件)中设置资源库
这里是完整的代码
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文件。
的替代方法我可以做的是提取我的资源库到本地文件夹,但它留下吨的临时文件
我宁愿不做BTW Android有没有问题,在同一时间访问一个文件从我的Java的lib里面
//Accessing individual files work on Android
InputStream input = DatabaseManager.class.getResourceAsStream("/h2db.mv.db");
在你试图在Android上使用它之前,你有没有'dex'-ify你的外部Java库? (或者它现在是'art'-ify吗?) –
是的,只有jetty7可以是dexed,在IOS(roboVM)中也有同样的成功事例,jetty 8和9不能被排除,所以我被jetty7 – jyonkheel
看起来像我会回答我自己的问题,我会稍后更新 – jyonkheel