<Android Studio>Gradle -- 如何编译单个java文件并运行其class
2018-02-02 14:42
1941 查看
本人这次的尝试是第一次接触gradle,通常的经验自然是靠搜索+蹩脚的英文阅读能力。
首先这个功能分为2块,编译+运行。
在module中的build.gradle创建single.gradle
1.先介绍下单独编译java文件,代码如下
packagepath表示该文件的包名路径,例如:
pacakge com.aa.bb
则packagepath = com/aa/bb
destinationDir表示class文件的输出路径,如果执行了编译任务后,Single.class会出现在bin/com/aa/bb文件夹下面
classpath表示需要使用到的三方库,需要预先设置
这里在我们的Single.java使用到了gson库
2.运行编译过的class文件
现在我们获得了bin/com/aa/bb/Single.class,接着就是运行该文件,代码如下
这个无需解释了,在Single.java中有static main的方法。
好了,本以为添加了新的single.gradle,并且在该module工程下的build.gradle添加
就可以了。结果编译+运行都没有执行。因为本人并不熟悉gradle的编译原理,而task即是任务,会一条条按序执行。既然他不执行,那我就手动执行这2个task。
这样就完事OK了,然后我们删除掉bin文件夹,毕竟这是个临时文件夹
现在献上完整的single.gradle
然后在该module工程下的build.gradle添加
这样只要点击gradle同步按钮,即可运行single.gradle,达到我预编译的目的。
有兴趣的同学可以一个个实现,看看效果。
PS:最后这些有用的信息都是在gradle的官网社区里面找到的
https://discuss.gradle.org/
再通过不断的调试完成。
首先这个功能分为2块,编译+运行。
在module中的build.gradle创建single.gradle
1.先介绍下单独编译java文件,代码如下
task compilesingle(type: JavaCompile) { source = './src/main/java' include "packagepath/Single.java" classpath = project.configurations.buildDependencies destinationDir = file('./bin') }
packagepath表示该文件的包名路径,例如:
pacakge com.aa.bb
则packagepath = com/aa/bb
include "com/aa/bb/Single.java"
destinationDir表示class文件的输出路径,如果执行了编译任务后,Single.class会出现在bin/com/aa/bb文件夹下面
classpath表示需要使用到的三方库,需要预先设置
configurations { buildDependencies } dependencies { buildDependencies "com.google.code.gson:gson:2.3.1" }
这里在我们的Single.java使用到了gson库
2.运行编译过的class文件
现在我们获得了bin/com/aa/bb/Single.class,接着就是运行该文件,代码如下
task execlass(type: JavaExec) { classpath = files('./bin', project.configurations.buildDependencies) main = 'com.aa.bb.Single' }
这个无需解释了,在Single.java中有static main的方法。
好了,本以为添加了新的single.gradle,并且在该module工程下的build.gradle添加
apply from: 'single.gradle'
就可以了。结果编译+运行都没有执行。因为本人并不熟悉gradle的编译原理,而task即是任务,会一条条按序执行。既然他不执行,那我就手动执行这2个task。
compilesingle.execute()
execlass.exec()
这样就完事OK了,然后我们删除掉bin文件夹,毕竟这是个临时文件夹
delete file('./bin')
现在献上完整的single.gradle
configurations { buildDependencies } dependencies { buildDependencies "com.google.code.gson:gson:2.3.1" }
task execlass(type: JavaExec) { classpath = files('./bin', project.configurations.buildDependencies) main = 'com.aa.bb.Single' }
task compilesingle(type: JavaCompile) {
source = './src/main/java'
include "com/aa/bb/Single.java"
classpath = project.configurations.buildDependencies
destinationDir = file('./bin')
}
task flow {
compilesingle.execute()
execlass.exec()
delete file('./bin')
}
然后在该module工程下的build.gradle添加
apply from: 'single.gradle'
这样只要点击gradle同步按钮,即可运行single.gradle,达到我预编译的目的。
有兴趣的同学可以一个个实现,看看效果。
PS:最后这些有用的信息都是在gradle的官网社区里面找到的
https://discuss.gradle.org/
再通过不断的调试完成。
相关文章推荐
- 如何将.class文件转换成.java文件——JAVA反编译工具总结[转]
- java编译好的class文件如何在jsp页面中调用
- java jdk安装 环境变量配置 cmd 命令行 编译java文件 运行.class文件 CLASSPATH配置
- 如何在命令行模式下编译运行带包的java文件
- 如何将.class文件转换成.java文件——JAVA反编译工具总结
- 关于命令行中javac 编译成功,用 java 运行 class 文件出现 “ 找不到或无法加载主类 ” 的问题
- javac编译成功,用java运行class文件出现“找不到或无法加载主类”
- 在命令行状态下,如何运行编译后的.class 文件???
- javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题解决起来很简单
- 如何反编译.class文件为.java文件
- 为何Eclipse编译后的class文件不能在cmd下用java运行?
- android工程中引入第三方JAR包后安装APK时老是提示找不到库文件 || Android如何将程序打成jar包 || 运行java.lang.noclassdeffounderror错误
- Android apk 文件反编译&&如何反编译xml文件&&如何看到apk文件中的java源代码
- javah指令编译class文件生成.h文件找不到android.app.Activity
- 如何在命令行模式下编译运行带包的java文件
- 如何将.class文件转换成.java文件——JAVA反编译工具总结[转]
- javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题解决起来很简单
- 如何使用cmd来编译和运行java文件
- java第一课:java第一课:如何在命令行模式下编译运行带包的java文件
- 如何将java中class文件反编译成java文件