Java字节码到.dex或.apk不起作用。。。什么';怎么办?

Java字节码到.dex或.apk不起作用。。。什么';怎么办?,java,android,eclipse,apk,dex,Java,Android,Eclipse,Apk,Dex,我正在测试用Eclipse(IDE)编写Java程序。 我的目标是,它将在Windows、Linux和Android上运行 将其导出为.class或.jar没有问题! 我设法用Android Studio工具“dx”将其转换为.jar也转换为.dex和.apk(天哪,这是一个糟糕的过程) 当我尝试在我的android手机(v6.0.1)上运行它们时,只有.apk是可执行的。。。当我运行.apk时,我得到: “Parsingfehler-Beim Parsen des Pakets is ein

我正在测试用Eclipse(IDE)编写Java程序。 我的目标是,它将在Windows、Linux和Android上运行

将其导出为.class或.jar没有问题! 我设法用Android Studio工具“dx”将其转换为.jar也转换为.dex和.apk(天哪,这是一个糟糕的过程)

当我尝试在我的android手机(v6.0.1)上运行它们时,只有.apk是可执行的。。。当我运行.apk时,我得到:

“Parsingfehler-Beim Parsen des Pakets is ein Fehler aufgetreten”
(Parsingerror-在分析数据包时发生错误)

我做错了什么?我发布了我的代码,可能有一个错误:

/** v0.01 vom 22.06.2017 @author Rudolf Geist */
package allgemeines;

import javax.swing.JOptionPane;

public class Systemausleser 
{

    public static void main(String[] args)
    {
        // Ich will eine Main, die überall läuft
        System.out.println("Infos auslesen \n");

        System.out.println("Zeichen zwischen Ordnern (Betriebssystem-Abhängig!) : " + System.getProperty("file.separator") );
        System.out.println("OS-Name: " + System.getProperty("os.name") );
        System.out.println("OS-Architektur (OS-Bit-Version): " + System.getProperty("os.arch") );
        System.out.println("User Name: " + System.getProperty("user.name") );

        JOptionPane.showConfirmDialog(null, "Es klappt!");
    }

}
当我试图用.bat[Windows]或sh[Linux-Lubuntu]启动这个程序的.class或.jar[称之为“testi”]时,它成功了

我是否可以继续只在blank Eclipse上开发,然后尝试转换为android兼容的格式。。。或者我应该重新尝试我的过程吗?

您正在使用Java Swing库;这是安卓上的

当Swing处理
JFrame
s和
JPanels
时,Android使用
Activity
s和
FrameLayout
s。这意味着Android不知道如何执行您的代码,因为它甚至不知道什么是
JOptionPane

您应该只尝试迁移基本计算,并避免任何特定于操作系统的调用。通过对照检查包调用,或快速将代码粘贴到中,查看是否有投诉,可以验证支持哪些函数

如果您确实需要一个独立于平台的UI,那么您应该考虑与可用库(如)的本机集成,或者搜索一个与平台无关的解决方案。我正是为这个问题而创建的。

您正在使用Java Swing库;这是安卓上的

当Swing处理
JFrame
s和
JPanels
时,Android使用
Activity
s和
FrameLayout
s。这意味着Android不知道如何执行您的代码,因为它甚至不知道什么是
JOptionPane

您应该只尝试迁移基本计算,并避免任何特定于操作系统的调用。通过对照检查包调用,或快速将代码粘贴到中,查看是否有投诉,可以验证支持哪些函数


如果您确实需要一个独立于平台的UI,那么您应该考虑与可用库(如)的本机集成,或者搜索一个与平台无关的解决方案。我正是为这个问题而创作的。

我认为你的方法对Android是错误的。您不能创建一个到处运行的
main
方法,尤其是因为Android不是一个常见的Java环境

在我看来,更有用的方法是开发一个独立于系统的库,然后由依赖于系统的应用程序使用

因此,您可以提供三种不同的应用程序:

  • 一个基于控制台/无头Java应用程序
  • 一个基于Swing的Java应用程序
  • 一个基于Android的应用程序

我认为你的方法对Android是错误的。您不能创建一个到处运行的
main
方法,尤其是因为Android不是一个常见的Java环境

在我看来,更有用的方法是开发一个独立于系统的库,然后由依赖于系统的应用程序使用

因此,您可以提供三种不同的应用程序:

  • 一个基于控制台/无头Java应用程序
  • 一个基于Swing的Java应用程序
  • 一个基于Android的应用程序

如果我正确理解您的答案,这意味着整个GUI处理是不同的。因此,背景逻辑应该是兼容的。在我的情况下,所有sysout行都应该工作,或者你的操作系统也是特定的?我在androdstudio中复制了这个部分,但由于有两行注释不清,它不再工作了(在我再次转换这个新的.jar之后)。我试图用java.swing out对这两行进行注释。。。我错过什么了吗?你完全正确
System.out.println()
受Android支持,它将在Logcat输出中使用标签
System.out
。您是否尝试过将代码编译为
.jar
,并将其包含在Android构建路径中?我不理解您对构建路径的含义。是的,我有Eclipse(编译器设置在v1.7)和Android Studio。现在我将其导出为jar(Testi.jar)。接下来,我打开CMD,用“:d”切换到硬盘,导航到android studio的文件夹“cd d:\AndroidStudioSDK\build tools\25.0.3”,然后启动dx工具:dx--dex--output=“[path]\testi.apk”“[path]\testi.jar”,我通过usb电缆将这个创建的.apk(testi.apk)移动到我的androidphone。。。当我试着用我的手提电脑启动它时。。。我得到了错误信息。。。你看到我的错误了吗?或者我如何让它工作?如果我正确理解你的答案,这意味着整个GUI处理是不同的。因此,背景逻辑应该是兼容的。在我的情况下,所有sysout行都应该工作,或者你的操作系统也是特定的?我在androdstudio中复制了这个部分,但由于有两行注释不清,它不再工作了(在我再次转换这个新的.jar之后)。我试图用java.swing out对这两行进行注释。。。我错过什么了吗?你完全正确
System.out.println()
受Android支持,它将在Logcat输出中使用标签
System.out
。您是否尝试过将代码编译为
.jar
,并将其包含在Android构建路径中?我不理解您对构建路径的含义。是的,我有Eclipse(编译器设置在v1.7)和Android Studio。现在我将其导出为jar(Testi.jar)。接下来,我打开CMD,用“:d”切换到硬盘,导航到android studio的文件夹“cd d:\AndroidStudioSDK\build tools\25.0.3”,然后启动dx工具:dx--dex--output=“[path]\testi.apk”“[path]\testi.jar”