java 编译失败,其中包含 jar 文件的类路径

java compile failed where classpath with jar files

目录中有一个名为 353.jarjar。我新建了一个 java class 并导入了 class 353.jar.

import com.coxier.test.DrawaerLayout;


class Test {
    public static void main(String[] args) {
        DrawaerLayout d = new DrawaerLayout();
    }
}

我用下面的命令编译Test.java

javac -verbose -classpath /Users/coxier/test/app/build/intermediates/transforms/dexBuilder/debug/353.jar:. TestA.java

但是这里有一个错误:

error: package com.coxier.test does not exist

编辑 1

谢谢@Marquis。我知道这个jar是一个dex格式的文件。

jar tvf 351.jar

输出为: 1080024 Thu Jul 02 17:52:10 CST 2020 classes.dex

javac与android.

无关

Android 可以使用一种非常 java 但不完全 java 的语言来完成开发。特别是,它周围的所有基础设施,例如编译代码的样子,完全是非 java(例如,随 not-android-targeted java 一起提供的工具,例如您的 OpenJDK 安装,对此一无所知,也无法阅读任何内容)。

那个 jar 文件包含,就 java 本身而言(javac 只是 java,而不是 android),绝对没有:它有不知道 dex 文件是什么,所以忽略它。

如果 jar 文件包含以下条目,此代码将起作用:

/com/coxier/test/DrawaerLayout/Test.class

然后,javac -cp thatJar.jar TestA.java 会起作用,假设 TestA.java 在当前工作目录中并且包含:

import com.coxier.test.DrawaerLayout.Test;

public class TestA {
    Test test;
}

如果你有 Test.dex 文件的源代码,你可以制作一个 class 文件,但听起来你需要的是 TestA.java 也可以编译android 工具包,它可能确实知道什么是 dex 文件,甚至可以在 jars 中接受它们(尽管我记得 jars 不是 android 也可以的东西,就像它不 'do' class 个文件)。