Redian新闻
>
com.sun.tools.javac.Main 问题
avatar
com.sun.tools.javac.Main 问题# Java - 爪哇娇娃
c*s
1
在程序里用com.sun.tools.javac.Main这个类编译一java文件时,用的是静态compile方
法。这个类里没有一个方法可以让你指定ClassLoader。
我现在遇到的问题是用Main.compile()方法编译时一堆类找不到,而我手上有认识这些类
的ClassLoader。
怎样才能让Main用我指定的ClassLoader来编译文件呢?
我已经试过用这个ClassLoader 动态得到Main类,动态调用compile方法,但结果一样。
先谢。
avatar
h*j
2
如果你那个classloader能拿到classpath的话就当参数传给Main即可
等于contruct javac command
seems Main uses classpath of the default classloader if
no -classpath argument assigned.

【在 c*****s 的大作中提到】
: 在程序里用com.sun.tools.javac.Main这个类编译一java文件时,用的是静态compile方
: 法。这个类里没有一个方法可以让你指定ClassLoader。
: 我现在遇到的问题是用Main.compile()方法编译时一堆类找不到,而我手上有认识这些类
: 的ClassLoader。
: 怎样才能让Main用我指定的ClassLoader来编译文件呢?
: 我已经试过用这个ClassLoader 动态得到Main类,动态调用compile方法,但结果一样。
: 先谢。

avatar
m*t
3




I am not sure the concept of classloader applies to compilation at all. The
compiler only recognizes one source path and one classpath.

【在 c*****s 的大作中提到】
: 在程序里用com.sun.tools.javac.Main这个类编译一java文件时,用的是静态compile方
: 法。这个类里没有一个方法可以让你指定ClassLoader。
: 我现在遇到的问题是用Main.compile()方法编译时一堆类找不到,而我手上有认识这些类
: 的ClassLoader。
: 怎样才能让Main用我指定的ClassLoader来编译文件呢?
: 我已经试过用这个ClassLoader 动态得到Main类,动态调用compile方法,但结果一样。
: 先谢。

avatar
c*s
4
不是命令行编译,是在程序中直接用Main类编译。
我有的ClassLoader是ClassLoader对象不是classpath字符串。此ClassLoader不是URLCla
ssLoader所以拿不到所有的jar和目录路径。就算可以,也不能保证每层父ClassLoader可
以。

在程序里用com.sun.tools.javac.Main这个类编译一java文件时,用的是静态compile方
些类
样。

【在 h**j 的大作中提到】
: 如果你那个classloader能拿到classpath的话就当参数传给Main即可
: 等于contruct javac command
: seems Main uses classpath of the default classloader if
: no -classpath argument assigned.

avatar
c*s
5

在程序里用com.sun.tools.javac.Main这个类编译一java文件时,用的是静态compile


如果要动态编译,一般手上有的会是一个ClassLoader而不是路径。
www.janino.net是个能接受ClassLoader的嵌入java编译器,但存在别的顾虑。
我的要求不是很高,如果javac Main可以还是用它实现。

【在 m******t 的大作中提到】
:
: 方
: 类
: 。
: I am not sure the concept of classloader applies to compilation at all. The
: compiler only recognizes one source path and one classpath.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。