问题描述
我正在攻读学士学位。我需要创建一个Android应用程序,以使用智能手机的传感器识别人类活动。我不确定我是否知道该怎么做,但是我在RStudio中使用了决策树算法,然后将其转换为pmml文件,并想将其导入android应用程序中,但需要将其转换为.ser文件。我在PMMLTransformer.java中编写了此方法(我不知道它是否正确)。
我编写了pom.xml和PMMLTransformer.java文件,但是当我从命令行运行maven时,出现此错误。
[ERROR] Failed to execute goal com.simpligility.maven.plugins:android-maven-plugin:4.6.0:generate-sources (default-generate-sources) on project app-example: Execution default-generate-sources of goal com.simpligility.maven.plugins:android-maven-plugin:4.6.0:generate-sources Failed: A required class was missing while executing com.simpligility.maven.plugins:android-maven-plugin:4.6.0:generate-sources: javax/xml/bind/annotation/XmlSchema
[ERROR] -----------------------------------------------------
[ERROR] realm = extension>com.simpligility.maven.plugins:android-maven-plugin:4.6.0
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/C:/Users/viori/.m2/repository/com/simpligility/maven/plugins/android-maven-plugin/4.6.0/android-maven-plugin-4.6.0.jar
[ERROR] urls[1] = file:/C:/Users/viori/.m2/repository/com/android/tools/annotations/25.3.0/annotations-25.3.0.jar
[ERROR] urls[2] = file:/C:/Users/viori/.m2/repository/com/android/tools/common/25.3.0/common-25.3.0.jar
[ERROR] urls[3] = file:/C:/Users/viori/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar
[ERROR] urls[4] = file:/C:/Users/viori/.m2/repository/com/android/tools/dvlib/25.3.0/dvlib-25.3.0.jar
[ERROR] urls[5] = file:/C:/Users/viori/.m2/repository/com/android/tools/sdk-common/25.3.0/sdk-common-25.3.0.jar
[ERROR] urls[6] = file:/C:/Users/viori/.m2/repository/com/android/tools/build/builder-test-api/2.3.0/builder-test-api-2.3.0.jar
[ERROR] urls[7] = file:/C:/Users/viori/.m2/repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar
[ERROR] urls[8] = file:/C:/Users/viori/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar
[ERROR] urls[9] = file:/C:/Users/viori/.m2/repository/com/android/tools/sdklib/25.3.0/sdklib-25.3.0.jar
[ERROR] urls[10] = file:/C:/Users/viori/.m2/repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar
[ERROR] urls[11] = file:/C:/Users/viori/.m2/repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar
[ERROR] urls[12] = file:/C:/Users/viori/.m2/repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar
[ERROR] urls[13] = file:/C:/Users/viori/.m2/repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar
[ERROR] urls[14] = file:/C:/Users/viori/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
[ERROR] urls[15] = file:/C:/Users/viori/.m2/repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar
[ERROR] urls[16] = file:/C:/Users/viori/.m2/repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar
[ERROR] urls[17] = file:/C:/Users/viori/.m2/repository/com/android/tools/build/builder/2.3.0/builder-2.3.0.jar
[ERROR] urls[18] = file:/C:/Users/viori/.m2/repository/com/android/tools/jack/jack-api/0.13.0/jack-api-0.13.0.jar
[ERROR] urls[19] = file:/C:/Users/viori/.m2/repository/com/android/tools/jill/jill-api/0.10.0/jill-api-0.10.0.jar
[ERROR] urls[20] = file:/C:/Users/viori/.m2/repository/com/android/tools/analytics-library/protos/25.3.0/protos-25.3.0.jar
[ERROR] urls[21] = file:/C:/Users/viori/.m2/repository/com/google/protobuf/protobuf-java/3.0.0/protobuf-java-3.0.0.jar
[ERROR] urls[22] = file:/C:/Users/viori/.m2/repository/com/android/tools/analytics-library/shared/25.3.0/shared-25.3.0.jar
[ERROR] urls[23] = file:/C:/Users/viori/.m2/repository/com/android/tools/analytics-library/tracker/25.3.0/tracker-25.3.0.jar
[ERROR] urls[24] = file:/C:/Users/viori/.m2/repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar
[ERROR] urls[25] = file:/C:/Users/viori/.m2/repository/org/ow2/asm/asm-tree/5.0.4/asm-tree-5.0.4.jar
[ERROR] urls[26] = file:/C:/Users/viori/.m2/repository/com/android/tools/build/builder-model/2.3.0/builder-model-2.3.0.jar
[ERROR] urls[27] = file:/C:/Users/viori/.m2/repository/com/android/tools/repository/25.3.0/repository-25.3.0.jar
[ERROR] urls[28] = file:/C:/Users/viori/.m2/repository/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar
[ERROR] urls[29] = file:/C:/Users/viori/.m2/repository/com/android/tools/build/manifest-merger/25.3.0/manifest-merger-25.3.0.jar
[ERROR] urls[30] = file:/C:/Users/viori/.m2/repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
[ERROR] urls[31] = file:/C:/Users/viori/.m2/repository/com/android/tools/ddms/ddmlib/25.3.0/ddmlib-25.3.0.jar
[ERROR] urls[32] = file:/C:/Users/viori/.m2/repository/com/android/tools/layoutlib/layoutlib-api/25.3.0/layoutlib-api-25.3.0.jar
[ERROR] urls[33] = file:/C:/Users/viori/.m2/repository/com/intellij/annotations/12.0/annotations-12.0.jar
[ERROR] urls[34] = file:/C:/Users/viori/.m2/repository/com/android/tools/lint/lint/25.3.0/lint-25.3.0.jar
[ERROR] urls[35] = file:/C:/Users/viori/.m2/repository/org/eclipse/jdt/core/compiler/ecj/4.6.1/ecj-4.6.1.jar
[ERROR] urls[36] = file:/C:/Users/viori/.m2/repository/com/android/tools/lint/lint-api/25.3.0/lint-api-25.3.0.jar
[ERROR] urls[37] = file:/C:/Users/viori/.m2/repository/com/android/tools/external/com-intellij/uast/162.2228.14/uast-162.2228.14.jar
[ERROR] urls[38] = file:/C:/Users/viori/.m2/repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar
[ERROR] urls[39] = file:/C:/Users/viori/.m2/repository/com/android/tools/lint/lint-checks/25.3.0/lint-checks-25.3.0.jar
[ERROR] urls[40] = file:/C:/Users/viori/.m2/repository/org/ow2/asm/asm-analysis/5.0.4/asm-analysis-5.0.4.jar
[ERROR] urls[41] = file:/C:/Users/viori/.m2/repository/org/sonatype/aether/aether-util/1.13.1/aether-util-1.13.1.jar
[ERROR] urls[42] = file:/C:/Users/viori/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[43] = file:/C:/Users/viori/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[44] = file:/C:/Users/viori/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
[ERROR] urls[45] = file:/C:/Users/viori/.m2/repository/org/sonatype/sisu/sisu-inject-bean/2.3.0/sisu-inject-bean-2.3.0.jar
[ERROR] urls[46] = file:/C:/Users/viori/.m2/repository/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0-no_aop.jar
[ERROR] urls[47] = file:/C:/Users/viori/.m2/repository/org/sonatype/sisu/sisu-guava/0.9.9/sisu-guava-0.9.9.jar
[ERROR] urls[48] = file:/C:/Users/viori/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[49] = file:/C:/Users/viori/.m2/repository/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar
[ERROR] urls[50] = file:/C:/Users/viori/.m2/repository/emma/emma/2.0.5312/emma-2.0.5312.jar
[ERROR] urls[51] = file:/C:/Users/viori/.m2/repository/org/codehaus/plexus/plexus-archiver/3.0.1/plexus-archiver-3.0.1.jar
[ERROR] urls[52] = file:/C:/Users/viori/.m2/repository/org/codehaus/plexus/plexus-io/2.6/plexus-io-2.6.jar
[ERROR] urls[53] = file:/C:/Users/viori/.m2/repository/org/iq80/snappy/snappy/0.3/snappy-0.3.jar
[ERROR] urls[54] = file:/C:/Users/viori/.m2/repository/org/codehaus/plexus/plexus-utils/3.1.0/plexus-utils-3.1.0.jar
[ERROR] urls[55] = file:/C:/Users/viori/.m2/repository/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3.jar
[ERROR] urls[56] = file:/C:/Users/viori/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar
[ERROR] urls[57] = file:/C:/Users/viori/.m2/repository/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar
[ERROR] urls[58] = file:/C:/Users/viori/.m2/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar
[ERROR] urls[59] = file:/C:/Users/viori/.m2/repository/com/github/rtyley/android-screenshot-paparazzo/1.9/android-screenshot-paparazzo-1.9.jar
[ERROR] urls[60] = file:/C:/Users/viori/.m2/repository/com/madgag/animated-gif-lib/1.0/animated-gif-lib-1.0.jar
[ERROR] urls[61] = file:/C:/Users/viori/.m2/repository/com/github/rtyley/android-screenshot-celebrity/1.9/android-screenshot-celebrity-1.9.jar
[ERROR] urls[62] = file:/C:/Users/viori/.m2/repository/org/apache/maven/shared/maven-dependency-tree/2.2/maven-dependency-tree-2.2.jar
[ERROR] urls[63] = file:/C:/Users/viori/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
[ERROR] urls[64] = file:/C:/Users/viori/.m2/repository/com/google/apis/google-api-services-androidpublisher/v2-rev13-1.19.0/google-api-services-androidpublisher-v2-rev13-1.19.0.jar
[ERROR] urls[65] = file:/C:/Users/viori/.m2/repository/com/google/api-client/google-api-client/1.19.0/google-api-client-1.19.0.jar
[ERROR] urls[66] = file:/C:/Users/viori/.m2/repository/com/google/oauth-client/google-oauth-client/1.19.0/google-oauth-client-1.19.0.jar
[ERROR] urls[67] = file:/C:/Users/viori/.m2/repository/com/google/http-client/google-http-client/1.19.0/google-http-client-1.19.0.jar
[ERROR] urls[68] = file:/C:/Users/viori/.m2/repository/com/google/http-client/google-http-client-jackson2/1.19.0/google-http-client-jackson2-1.19.0.jar
[ERROR] urls[69] = file:/C:/Users/viori/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.1.3/jackson-core-2.1.3.jar
[ERROR] urls[70] = file:/C:/Users/viori/.m2/repository/com/google/guava/guava-jdk5/13.0/guava-jdk5-13.0.jar
[ERROR] urls[71] = file:/C:/Users/viori/.m2/repository/org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.jar
[ERROR] urls[72] = file:/C:/Users/viori/.m2/repository/junit/junit/4.12/junit-4.12.jar
[ERROR] urls[73] = file:/C:/Users/viori/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[ERROR] urls[74] = file:/C:/Users/viori/.m2/repository/jaxen/jaxen/1.1.6/jaxen-1.1.6.jar
[ERROR] urls[75] = file:/C:/Users/viori/.m2/repository/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
[ERROR] urls[76] = file:/C:/Users/viori/.m2/repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1.jar
[ERROR] urls[77] = file:/C:/Users/viori/.m2/repository/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.jar
[ERROR] urls[78] = file:/C:/Users/viori/.m2/repository/org/apache/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.jar
[ERROR] urls[79] = file:/C:/Users/viori/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.0.0/maven-shared-utils-3.0.0.jar
[ERROR] urls[80] = file:/C:/Users/viori/.m2/repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar
[ERROR] urls[81] = file:/C:/Users/viori/.m2/repository/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.jar
[ERROR] urls[82] = file:/C:/Users/viori/.m2/repository/org/codehaus/plexus/plexus-compiler-manager/2.7/plexus-compiler-manager-2.7.jar
[ERROR] urls[83] = file:/C:/Users/viori/.m2/repository/org/codehaus/plexus/plexus-compiler-javac/2.7/plexus-compiler-javac-2.7.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import from realm ClassRealm[maven.api,parent: null]]
[ERROR]
[ERROR] -----------------------------------------------------
这是我的pom.xml文件:
<?xml version="1.0" ?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jpmml</groupId>
<artifactId>DailyActivity</artifactId>
<version>1.4.7</version>
</parent>
<groupId>com.simpligility.maven.plugins</groupId>
<artifactId>app-example</artifactId>
<packaging>apk</packaging>
<dependencies>
<dependency>
<groupId>org.jpmml</groupId>
<artifactId>app</artifactId>
<version>1.4.7</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.1.1.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jpmml</groupId>
<artifactId>DailyActivity</artifactId>
<version>1.4.7</version>
<type>pom</type>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.ws.commons.schema/XmlSchema -->
<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.jpmml</groupId>
<artifactId>pmml-manager</artifactId>
<version>1.1.20</version>
</dependency>
</dependencies>
<properties>
<android.sdk.path>/Users/viori/AppData/Local/Android/Sdk</android.sdk.path>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.simpligility.maven.plugins</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>4.6.0</version>
<extensions>true</extensions>
<configuration>
<androidManifestFile>${project.basedir}/src/main/android/AndroidManifest.xml</androidManifestFile>
<assetsDirectory>${project.basedir}/src/main/android/assets</assetsDirectory>
<resourceDirectory>${project.basedir}/src/main/android/resources</resourceDirectory>
<sdk>
<platform>29</platform>
</sdk>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
</configuration>
</plugin>
</plugins>
</build>
</project>
还有PMMLTransformer.java
package org.jpmml.android;
import org.xml.sax.InputSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.xml.transform.source;
import org.dmg.pmml.PMML;
import org.jpmml.model.ImportFilter;
import org.jpmml.model.JAXBUtil;
import org.jpmml.model.SerializationUtil;
import org.jpmml.model.visitors.StringInterner;
import org.xml.sax.InputSource;
import javax.xml.transform.source;
public class PMMLTransformer {
private final static String BASE_PATH = "./";
public static void main(String[] args) throws Exception {
File pmmlFile = new File(BASE_PATH + "/model.pmml");
File serFile = new File(BASE_PATH + "/model.pmml.ser");
// Parse a pmml object from a file
PMML pmml;
try (InputStream is = new FileInputStream(pmmlFile)) {
Source source = ImportFilter.apply(new InputSource(is));
pmml = JAXBUtil.unmarshalPMML(source);
}
// Apply a visitor
StringInterner visitor = new StringInterner();
visitor.applyTo(pmml);
// Write an ser file from the pmml object
try (OutputStream os = new FileOutputStream(serFile)) {
SerializationUtil.serializePMML(pmml,os);
}
}
}
有人可以帮我吗? 谢谢!
解决方法
-
删除.m2 / repository文件夹,然后再次构建项目。
-
如果不起作用,请尝试使用其他版本的maven。