java 编译失败,其中包含 jar 文件的类路径
java compile failed where classpath with jar files
目录中有一个名为 353.jar
的 jar
。我新建了一个 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 个文件)。
目录中有一个名为 353.jar
的 jar
。我新建了一个 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 个文件)。