java.exe 以非零退出值 1 结束

java.exe finished with non-zero exit value 1

刚开始,我并没有尝试从 Android 中的 .xlsx 文件中读取单元格, 我已经尝试了几乎所有我用谷歌搜索的东西,但每次(在两台不同的电脑上,都是 Java 1.7.0_79)当我试图构建(运行)这个应用程序时,它以同样的错误结束:

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1

我不知道,我还应该做什么,Java 和 Android Studio 已经重新安装了...没有。我使用了 https://github.com/hmkcode/Java/tree/master/java-excel-poi

中的代码

来自 Messages

的完整输出
Information:Gradle tasks [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72310Library UP-TO-DATE
:app:prepareComAndroidSupportMultidex100Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42310Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:preDebugAndroidTestBuild UP-TO-DATE
:app:prepareDebugAndroidTestDependencies
:app:compileDebugAndroidTestAidl UP-TO-DATE
:app:processDebugAndroidTestManifest UP-TO-DATE
:app:compileDebugAndroidTestRenderscript UP-TO-DATE
:app:generateDebugAndroidTestBuildConfig UP-TO-DATE
:app:generateDebugAndroidTestAssets UP-TO-DATE
:app:mergeDebugAndroidTestAssets UP-TO-DATE
:app:generateDebugAndroidTestResValues UP-TO-DATE
:app:generateDebugAndroidTestResources UP-TO-DATE
:app:mergeDebugAndroidTestResources UP-TO-DATE
:app:processDebugAndroidTestResources UP-TO-DATE
:app:generateDebugAndroidTestSources UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources UP-TO-DATE
:app:dexDebug
trouble processing "javax/xml/stream/events/StartElement.class":
Ill-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.
This is often due to inadvertently including a core library file
in your application's project, when using an IDE (such as
Eclipse). If you are sure you're not intentionally defining a
core class, then this is the most likely explanation of what's
going on.
However, you might actually be trying to define a class in a core
namespace, the source of which you may have taken, for example,
from a non-Android virtual machine project. This will most
assuredly not work. At a minimum, it jeopardizes the
compatibility of your app with future versions of the platform.
It is also often of questionable legality.
If you really intend to build a core library -- which is only
appropriate as part of creating a full virtual machine
distribution, as opposed to compiling an application -- then use
the "--core-library" option to suppress this error message.
If you go ahead and use "--core-library" but are in fact
building an application, then be forewarned that your application
will still fail to build or run, at some point. Please be
prepared for angry customers who find, for example, that your
application ceases to function once they upgrade their operating
system. You will be to blame for this problem.
If you are legitimately using some code that happens to be in a
core package, then the easiest safe alternative you have is to
repackage that code. That is, move the classes in question into
your own package namespace. This means that they will never be in
conflict with core system classes. JarJar is a tool that may help
you in this endeavor. If you find that you cannot do this, then
that is an indication that the path you are on will ultimately
lead to pain, suffering, grief, and lamentation.
1 error; aborting
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1
Information:BUILD FAILED
Information:Total time: 2.301 secs
Information:1 error
Information:0 warnings
Information:See complete output in console

MainActivity.java

package tona_kriz.kriziksupl;

import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.widget.Toast;

import java.io.BufferedInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class MainActivity extends Activity {


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Workbook wb = null;

        //1. Open the file

        try {
            AssetManager assManager = getApplicationContext().getAssets();
            InputStream is = null;
            try {
                is = assManager.open("supl_zak.xlsx");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            InputStream caInput = new BufferedInputStream(is);
            wb = new XSSFWorkbook(caInput);
            int i = wb.getNumberOfSheets();
            Toast.makeText(getApplicationContext(), "pocet: " + i, Toast.LENGTH_SHORT).show();
            Toast.makeText(getApplicationContext(), "otevreno", Toast.LENGTH_SHORT).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //2. Open a sheet
        Sheet sheet = wb.getSheetAt(0);


        //3. Get each cell by row & column number
        Cell cell;
        //Cell cell = sheet.getRow(0).getCell(0);
        //double numberVal = cell.getNumericCellValue();
        //System.out.println("Row: 0 - Column: 0 = "+numberVal);
        //-----------------------------
        cell = sheet.getRow(0).getCell(8);
        String stringVal = cell.getStringCellValue();
        System.out.println("Row: 0 - Column: 1 = "+stringVal);
        //-----------------------------
        //cell = sheet.getRow(0).getCell(2);
        //Date dateVal = cell.getDateCellValue();
        //System.out.println("Row: 0 - Column: 2 = "+dateVal);
        //-----------------------------
        //cell = sheet.getRow(0).getCell(3);
        //boolean booleanVal = cell.getBooleanCellValue();
        //System.out.println("Row: 0 - Column: 3 = "+booleanVal);
        //-----------------------------

    }
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="tona_kriz.kriziksupl" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:largeHeap="true"
        android:theme="@style/AppTheme"
        android:name="android.support.multidex.MultiDexApplication"> >
        <activity android:name=".MainActivity" >
            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    dexOptions {
        preDexLibraries false
        incremental true
        javaMaxHeapSize "4g"
    }

    afterEvaluate {
        tasks.matching {
            it.name.startsWith('dex')
        }.each { dx ->
            if (dx.additionalParameters == null) {
                dx.additionalParameters = ['--multi-dex']
            } else {
                dx.additionalParameters += '--multi-dex'
            }
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }

    defaultConfig {
        applicationId "tona_kriz.kriziksupl"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        multiDexEnabled false
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:multidex:1.0.0'
    compile files('libs/commons-codec-1.5.jar')
    compile files('libs/dom4j-1.6.1.jar')
    compile files('libs/poi-3.9.jar')
    compile files('libs/poi-ooxml-3.9.jar')
    compile files('libs/poi-ooxml-schemas-3.9.jar')
    compile files('libs/stax-api-1.0.1.jar')
    compile files('libs/xml-apis-1.0.b2.jar')
    compile files('libs/xmlbeans.jar')
}

但是,当我删除:

compile files('libs/commons-codec-1.5.jar')
compile files('libs/dom4j-1.6.1.jar')
compile files('libs/stax-api-1.0.1.jar')
compile files('libs/xml-apis-1.0.b2.jar')
compile files('libs/xmlbeans.jar')

应用程序启动,但崩溃...

Logcat http://pastebin.com/NG3AnW3z

文件"supl_zak.xlsx"可以从here.

下载

图书馆

有什么解决办法吗?

原因是至少有一个库 (xmlbeans.jar) 声明 类 可能与 Android 使用的核心库冲突。

xmlbeansjavax.xml 包中声明 类 - Android 在 this package 和其他类似包中也有 类。

来自错误信息:

If you are legitimately using some code that happens to be in a core package, then the easiest safe alternative you have is to repackage that code. That is, move the classes in question into your own package namespace.

基本上,构建工具认为您应该构建核心库,但您却试图使用与默认 Android 核心库冲突的库来构建应用程序。它建议您将您的 代码从核心包移动到不同的包中。

我的建议 - 停止使用试图使用核心包名称的外部库并使用 Android 提供的 XML 功能。

不幸的是,由于引入了第三方库依赖项,您无法在 Android 上直接使用 Apache POI。此外,库的大小会导致应用程序文件非常大,这通常不是 possible/desirable.您甚至有时会超出 Dalvik Android 字节码编译施加的限制。

有一些可用资源讨论如何在 Android 上获得 POI 运行:

我有一个想法,你可以遵循: 你导入的一些jar是API内部的,比如layoutlibs.jar,它们只参与编译,不打包在apk.If你要使用它们,只需在根目录下创建一个名为mylib的文件夹模块,然后看图,关注他们:

如果我的回答解决了您的问题,请采纳。

问题:java.exe 以非零退出值 1 结束

解决方案:为了解决这个问题,我已经尝试了大部分的解决方案,点击并反复尝试。

终于找到了解决这个问题的方法。

这些是您应该尝试解决问题的可能解决方案,根据我的说法,它一定会解决您的问题。

  1. 清理并重建您的项目。
  2. 请检查所有库是否已更新,gradle 构建版本是否已更新。
  3. 尝试增加 java 堆大小。
  4. 不要在代码中使用 lambda 表达式或语法。在我的情况下,这是问题所在,因为我使用的是 lambda 表达式,当我使用 lambda 表达式时,它需要在 build.gradle (app) 文件中声明,例如

编译选项{ 目标兼容性 1.8 来源兼容性 1.8 }

这个。

这是我遇到的实际问题,请从 build.gradle 文件中删除此 compileOptions 声明或使用与您的 Gradle 版本兼容的正确版本。

谢谢

我希望这个解决方案对您有所帮助并使您的问题得到解决。