xijunhu1982 2010-04-29 17:00
浏览 162
已采纳

一个对java代码进行编译执行的问题

[code="java"]
StandardJavaFileManager fileManager = compiler
.getStandardFileManager(diagnostics, null, null);
DiagnosticCollector diagnostics = new DiagnosticCollector();

String path1 = request.getSession().getServletContext().getRealPath("/");

// 对应的问题行

Iterable options = Arrays.asList("-encoding", "UTF-8",
"-d", path1 + "/WEB-INF/classes", "-cp", path1
+ "/WEB-INF/classes");

String[] sd = new String[1];
sd[0] = path1 + "/WEB-INF/classes/com/msproject/servlets/Model"
+ randow + ".java";

Iterable<? extends JavaFileObject> compilationUnits = fileManager
.getJavaFileObjectsFromStrings(Arrays.asList(sd));
//获得编译任务
JavaCompiler.CompilationTask task = compiler.getTask(null,
fileManager, diagnostics, options, null,
compilationUnits);
//执行
boolean success = task.call();
[/code]

上面"-cp"对应的路径是class下了类,如果现在要在编译的程序里面导入一个jar包,就要制定这个jar包的名(比如:path1 + "/WEB-INF/classes/sa.jar"),现在我既要导入class下面的类,也要导入sa.jar里面的类,怎么办?
我有一个方法是解压jar包,放到class下面,但是那样会导致有好多类,有没有其他方法,谢谢!

  • 写回答

1条回答 默认 最新

  • javarecipes 2010-04-29 17:23
    关注

    这就关系到classpath的概念问题了。

    classpath里面有2类东西。(1 class文件 2 jar文件)

    1.class文件添加到classpath里面,只需要指定到package的顶层。例如/WEB-INF/classes

    2.jar文件添加到classpath里面,只需要将带路径的jar文件名添加到classpath

    注意点:classpath可以有多个class目录和多个jar文件。在Windows和unix|linux系统里面分别以;分号和:冒号来分隔。

    所以,如果你需要在classpath里面添加而外的jar文件。

    (以Windows举例)
    classpath=\WEB-INF\classes;d:\lib\spring.jar;D:\depeng\tomcat6.0.20\lib\catalina.jar

    (以unix|linux举例)
    classpath=/WEB-INF/classes;/usr/home/me/lib/spring.jar

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧