我正在构建一个AWS Lambda函数,它可以动态编译一个类。但是lambda函数抛出错误,因为它无法定位依赖项,即动态编译的类的导入语句。我已经给出了所遵循步骤的示例代码。
请指导我如何定位依赖项,即设置类路径,以便动态创建的类编译时不会出现任何错误
>
正在编译的示例代码
private String constructTestCode(String methodCode) throws Exception{
StringBuffer strMethod = new StringBuffer();
strMethod.append("import org.json.simple.JSONObject;");
strMethod.append("public class TestJavaFile {");
strMethod.append("public void testSample() {");
strMethod.append("JSONObject j = new JSONObject();");
strMethod.append("}");
strMethod.append("}");
return strMethod.toString();
}
JavaCompilerCode
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
List<String> optionList = new ArrayList<String>();
optionList.addAll(Arrays.asList("-
classpath",System.getProperty("java.class.path")));
if (compiler == null) {
try {
Class<?> javacTool =
Class.forName("com.sun.tools.javac.api.JavacTool");
Method create = javacTool.getMethod("create");
compiler = (JavaCompiler) create.invoke(null);
compiler.getTask(null, null, null, optionList, null, null);
} catch (Exception e) {
throw new AssertionError(e);
}
}
try {
compiler.run(null, null, null,
javaFile.toFile().getAbsolutePath());
} catch (Exception e) {
context.getLogger().log("Exception " + e + "\n");
}
return javaFile.getParent().resolve(fileName + ".class");
格拉德尔一个胖罐子
task customFatJar(type: Jar) {
manifest {
attributes
'Class-Path': configurations.runtime.files.collect { it.name }.join('
')
}
baseName = 'all-in-one-jar'
from { configurations.compile.collect { it.isDirectory() ? it :
zipTree(it)
} }
with jar
}
执行lambda函数时出错
/tmp/TestJavaFile.java:1: error: package org.json.simple does not exist
要编译的文件保存在 /tmp目录中。我无法确定依赖jar文件所在的路径以及如何在类路径中设置它。请对此进行指导。
非常感谢!
通过将类路径设置为
try {
StandardJavaFileManager standardJavaFileManager =
compiler.getStandardFileManager(null, null, null);
standardJavaFileManager.setLocation(StandardLocation.CLASS_PATH,
listFilePaths(folder, context));
File[] javaFiles = new File[] { javaFile.toFile(),
Paths.get("/tmp/JUnitTest.java").toFile() };
Iterable<? extends JavaFileObject> compilationUnits1 =
standardJavaFileManager
.getJavaFileObjectsFromFiles(Arrays.asList(javaFiles));
CompilationTask task = compiler.getTask(null, standardJavaFileManager, null,
optionList, null,
compilationUnits1);
task.call();
} catch (Exception e) {
context.getLogger().log("Exception " + e + "\n");
}
我正在制作一个工具来动态显示运行java类的源代码。我需要一个工具来帮助我从到源代码的进行动态反编译。我知道一些反编译工具,如Jad,DJ反编译程序可以反编译一个.class文件,但我希望一个工具可以: 我需要这样的反编译工具,有人知道吗?谢谢
问题内容: 我有很多jar文件要添加到我的类路径中,因此,每次编译Java文件时,都会得到如下命令: 我尝试使用: 然后: 但是根本没有添加jar:由于缺少jar,我得到了错误信息…谢谢 问题答案: 也许您想尝试使用Maven来构建您的应用程序?它真的很容易设置,并且消除了依赖管理的所有问题。 同样从Java 6开始,您可以在类路径中使用通配符: set CLASSPATH = my_libs \
当我将mysql jdbc驱动程序复制到JDK的\jre\lib\ext时,它执行得非常好。现在,我想通过指定环境变量的类路径来使用jdbc。但是,这样做之后,我的程序抛出异常: “java.sql.SQLException:找不到适合jdbc的驱动程序:mysql://localhost/books" 如何设置类路径?
我已经在spring boot中使用log4j2完成了日志记录。我想从属性文件动态设置日志文件路径。我已经为此编写了下面的代码,但它工作得不好。 我的财产档案。属性代码如下所示 和我的日志文件log4j2。xml代码如下所示
问题内容: 有人可以告诉我在NetBeans中在哪里以及如何设置类路径吗?我想添加一个.jar文件。 问题答案: 用鼠标右键单击你的项目。 选择Properties。 在左侧单击Libraries。 下Compile tab-单击Add Jar/Folder按钮。 要么 扩展你的项目。 右键单击Libraries。 选择Add Jar/Folder。
我想做的是根据滚动的数字将Imageview设置为不同的骰子侧。