由于我使用Maven,因此我能够在我的本地存储库项目中构建和安装具有不完整Javadoc标记的项目(例如,缺少参数).
但是,由于我迁移到Java 8(1.8.0-ea-b90),当我尝试构建或安装Javadoc不是Javadoc的项目时,Maven绝对严格缺少文档标记,并向我展示了许多与Javadoc问题相关的Javadoc错误"完善".我试图在我的本地存储库中编译和安装的一些项目是我无法控制的第三方项目.因此,在我的场景中,仅修复所有这些项目中的所有Javadoc的解决方法似乎并不可行.
这是我mvn clean package install
在项目中执行时看到的输出的一小部分:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.026s
[INFO] Finished at: Mon Apr 08 21:06:17 CEST 2013
[INFO] Final Memory: 27M/437M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:jar (attach-javadocs) on project jpc: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:10: error: @param name not found
[ERROR] * @param terms the terms to assert
[ERROR] ^
[ERROR] /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:11: warning: no description for @return
[ERROR] * …
Run Code Online (Sandbox Code Playgroud) 我找到了许多参考资料,解释了如何使用JavaCompiler
该类以编程方式编译Java 类:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null, "a_file_name");
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一个开源库让我编译以编程方式生成的源代码(因此不涉及src文件)并在输出流中生成一些字节代码(不在文件系统中生成类文件) ).
例如,我正在寻找能够写这样的东西:
InputStream input = generateSourceCode();
OutputStream output = getByteCode(input);
doCoolStuffWithByteCode(output);
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我正在使用XSLT在XML文档中进行非常简单的转换.我只想删除具有特定名称的所有元素节点.碰巧在我的源文档中,所有这些节点都位于文档的末尾,但是在转换之后,虽然节点已经按照我的意图消失了,但是它们的位置有很多空行.
这完全是一个美容问题,因为我完成了我想要的改造,但出于好奇:我怎么能摆脱这些空行呢?这是我用于转换的XSL文件(我要删除的元素名为"relations"):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="relation"/>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JPL进行Java程序和YAP Prolog的交互.
在我的java文件中,这一行抛出异常:
Query query = new Query("consult", new Term[] { new Atom("test.pl") });
例外如下所示:
Exception in thread "main" jpl.JPLException: this Query's engine is not that which is attached to this thread
at jpl.Query.close(Query.java:511)
at jpl.Util.textToTerm(Util.java:165)
at jpl.Query.Query1(Query.java:183)
at jpl.Query.<init>(Query.java:176)
at Test.main(Test.java:12)
Run Code Online (Sandbox Code Playgroud)
虽然我没有在YAP中发现有人报告同样的问题,但是有些人在SWI中遇到了这个问题,并建议他们验证SWI是使用多线程支持编译的.以防我编译YAP支持多线程,但它没有帮助.
这个问题只发生在OS X中,我在Ubuntu中尝试过,一切正常.
有人知道OS X中此问题的解决方法吗?
我需要遍历地图的入口集,我不知道它的参数化类型.
迭代这样的入口集时,为什么不编译?
public void myMethod(Map anyMap) {
for(Entry entry : anyMap.entrySet()) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是这个编译:
public void myMethod(Map anyMap) {
Set<Entry> entries = anyMap.entrySet();
for(Entry entry : entries) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这也编译(我不能使用这个,因为我不知道地图的类型):
public void myMethod(Map<String, String> stringMap) {
for(Entry<String,String> entry : stringMap.entrySet()) {
...
}
}
Run Code Online (Sandbox Code Playgroud) 我开始使用BOM来集中项目中常见依赖项的版本.但是,它似乎不适用于插件版本:如果我在BOM中添加一个pluginManagement部分,那里声明的插件版本似乎不会影响导入BOM的项目插件的版本(Maven抱怨该版本尚未指定).
这是为什么?什么是集中普通插件版本的"Maven"方式?我应该只使用父POM吗?
有人可以指出学习如何在Android中使用/配置Hibernate的好教程/书籍吗?
在Scala程序中,我需要从标准输入中读取密码字符串(禁用回显).我尝试过:
java.io.Console.readPassword
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我不能java.io.Console
从Scala(?)调用对象中的任何方法.
从Scala中的标准输入读取字符串(带有回显禁用)的"标准"方法是什么?
是否可以在运行时为本机库添加新路径?(而不是使用属性java.library.path启动Java),因此调用System.loadLibrary(nativeLibraryName)
将在尝试查找时包含该路径nativeLibraryName
.这是可能的,或者这些路径在JVM启动后被冻结了吗?
我在这个网站上发现了一些有趣的问题(例如,这个)关于Java中的volatile变量的可见性效果,这些问题源于本段中的Java并发实践:
volatile变量的可见性效果超出了volatile变量本身的值.当线程A写入易失性变量并且随后线程B读取相同的变量时,在写入易失性变量之前,A可见的所有变量的值在读取volatile变量后变为B可见.因此,从内存可见性的角度来看,编写volatile变量就像退出synchronized块一样,读取volatile变量就像进入synchronized块一样.
然而,即使在阅读了本网站相关问题的答案后,我仍然无法完全清楚这种情况,具体而言:
线程A0在线程A 之前写入相同的volatile变量的影响是什么?换句话说:A0写入volatile变量,此值稍后由A(不读取变量)覆盖,然后由B读取.(所以我们有两个来自不同线程(A0和A)的写操作和一个来自第三个线程(B)的读操作).
我可以安全地假设A和B都能保证在A0写入volatile变量之前看到A0可见的所有内容吗?
更新:
这是关于Java内存模型的概念性问题.我知道我无法预测线程A0和A中的易失性变量的写入顺序以及线程B中的读取顺序.然而,仅仅为了便于讨论,让我们说 A0在A开始之前开始很多时间,并且在B开始另一个大量时间之后,让我们做出简化的假设,这足以保证写入和读取按所描述的顺序发生(我知道订单不能仅通过计时来保证,这只是为了避免偏离原始问题而进行的简化).