Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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
读取/解析MS Project MPP java Android 5.0+;?_Java_Android_Apache_Apache Poi_Mpxj - Fatal编程技术网

读取/解析MS Project MPP java Android 5.0+;?

读取/解析MS Project MPP java Android 5.0+;?,java,android,apache,apache-poi,mpxj,Java,Android,Apache,Apache Poi,Mpxj,大家好 Java上有一个MPXJ.org项目可以导入所有版本的MS project文件,但问题是,对于高于2000-2003.mpp版本的.mpp文件,对于高于2003的文件,awt Java lib使用的是awt.Color(getColor),它不是在Android上导入的,并且所有内容都与之相关 NoClassDefFoundError:解析失败:Ljava/awt/Color 这里是基本代码 MPPReader reader = new MPPReader(); String path2

大家好

Java上有一个MPXJ.org项目可以导入所有版本的MS project文件,但问题是,对于高于2000-2003.mpp版本的.mpp文件,对于高于2003的文件,awt Java lib使用的是awt.Color(getColor),它不是在Android上导入的,并且所有内容都与之相关

NoClassDefFoundError:解析失败:Ljava/awt/Color

这里是基本代码

MPPReader reader = new MPPReader();
String path2file = context.getFilesDir() + "/" +SAMPLE21_MPPX;
ProjectFile projectFile = reader.read(path2file); //<-- falling here
MPPReader读取器=新的MPPReader();
String path2file=context.getFilesDir()+“/”+SAMPLE21_MPPX;

ProjectFile ProjectFile=reader.read(路径文件)// 看起来您提供链接的Android版POI已经解决了这个问题。以下是android上的poi提供的
java.awt.Color
的定义:


希望您能够在项目中直接使用该源代码,或者从android上的
poi
JAR本身获取该类。

这里是逐步解决方案

  • android studio中的开放项目
  • 添加到build.gradle(模块:poisshadow)
//这两行之后

编译“org.apache.poi:poi ooxml:3.17”

编译'com.fasterxml:aalto-xml:1.0.0'

//使用mpxj gradle添加此行

编译组:'net.sf.mpxj',名称:'mpxj',版本:'7.2.1'

  • 编译项目,在安卓主机上获取文件\poi\poishadow\build\libs\poishadow all.jar
它集ApachePOI和mpxj于一身,之后我将此文件导入到我的项目中,在第一次运行(在ms project 2010/2016文件上测试)和在我的项目中添加的onCreate中,它似乎运行良好

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        System.setProperty("org.apache.poi.javax.xml.stream.XMLInputFactory", "com.fasterxml.aalto.stax.InputFactoryImpl");
        System.setProperty("org.apache.poi.javax.xml.stream.XMLOutputFactory", "com.fasterxml.aalto.stax.OutputFactoryImpl");
        System.setProperty("org.apache.poi.javax.xml.stream.XMLEventFactory", "com.fasterxml.aalto.stax.EventFactoryImpl");