2

大家好。

Java上有一个MPXJ.org项目可以导入所有版本的MS项目文件,但是麻烦的是对于高于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

E/AndroidRuntime: 致命异常: main

进程:com.example.bio.tj,PID:13427

java.lang.NoClassDefFoundError:解析失败:Ljava/awt/Color;

在 net.sf.mpxj.mpp.MPPUtility.getColor(MPPUtility.java:543) 等...

而且这个 MPXJ 还依赖于 Apache POI,它通常也不会导入到 Android,不要连接,我使用了这个程序集:https ://github.com/centic9/poi-on-android

有awt.Color的解决方案,但在这里我不明白该怎么做。

4

2 回答 2

2

看起来您提供链接的适用于 Android 的 POI 版本已经解决了这个问题。以下是java.awt.Color提供者的定义poi-on-android

https://github.com/centic9/poi-on-android/blob/master/poishadow/src/main/java/org/apache/poi/java/awt/Color.java

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

于 2018-02-23T08:51:21.510 回答
0

这是一步一步的解决方案。

// 在这 2 行之后

编译'org.apache.poi:poi-ooxml:3.17'

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

// 用 mpxj gradle 添加这一行

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

  • 编译项目,获取文件\poi-on-android-master\poishadow\build\libs\ poishadow-all.jar

这一切都在一个 apache poi 和 mpxj 中,之后我把这个文件导入到我的项目中,第一次运行似乎工作正常(在 ms 项目 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");
于 2018-02-23T13:33:12.857 回答