我的机器上安装了Java 6和7.Gradle使用1.7(使用检查gradle -v).但我需要编译我的代码以与Java 1.6兼容.据我所知文档,我可以使用该sourceCompatibility属性(并间接targetCompatibility默认为 sourceCompatibility).
所以我将以下行添加到我的构建文件中(在根级别,而不是在任何闭包中):
sourceCompatibility = 1.6
Run Code Online (Sandbox Code Playgroud)
(可以肯定的是,我也在targetCompatibility = 1.6一些试验中添加了,但这不应该有所作为)
要检查结果是否与1.6实际兼容,我将生成的jar解压缩cd到WEB-INF/classes文件夹中,并javap -verbose在.class我遇到的第一个文件中使用.但无论我是设置目标兼容性还是我使用1.5而不是1.6或者我是否将其指定为string('1.6'),每次javap的结果是
minor version: 0
major version: 51
Run Code Online (Sandbox Code Playgroud)
Afaik这意味着它是Java 1.7字节码,这是错误的.
有什么想法sourceCompatibility- 设置不起作用?或者javap不是检查兼容性的正确方法?
更新: 是的,这实际上是一个多项目构建,但我只检查了一个子项目的构建结果.在这个子项目的构建文件中,我做了上述更改,以确保它们实际应用.另外,我在根项目的构建文件中添加了以下内容(如@Vidya所提议的那样):
allprojects {
sourceCompatibility = 1.6
targetCompatibility = 1.6
}
Run Code Online (Sandbox Code Playgroud)
但这也没有帮助.
更新2: 我在相关的build.gradle文件中使用此代码片段检查了sourceCompatibility的设置:
compileJava.doFirst {
println "source compatibility " + sourceCompatibility
}
Run Code Online (Sandbox Code Playgroud)
它显示我的sourceCompatibility设置为1.7,虽然我试图将其设置为1.6.当我提取最简单的子项目并自行构建时,sourceCompatibility设置正确,Java Byte代码与1.6兼容.但是,即使这个子项目在多项目构建中使用时也使用了错误的sourceCompatibility.
BTW:我在一些子项目使用的插件是:java,war,jetty,gwt …
当使用JSON.stringify(或类似的东西)对对象进行字符串化时,有一种方法可以限制字符串化深度,即只有n级深入到对象树中并忽略之后的所有内容(或者更好:将占位符放在那里,表示留下了一些东西出来)?
我知道这JSON.stringify需要一个表单的替换函数,function (key, value)但我没有找到一种方法来获取当前键值对的原始对象的深度,交给更换器函数.
有没有办法使用默认的JSON.stringify实现?或者我已经达到了我应该自己实现字符串化的程度?或者是否有另一个可以推荐的具有此选项的字符串化库?
我想在我创建的库的jar中添加版本信息(可能还有一些关于jar的其他元数据).但是,我不确定使用什么属性.我发现规范以及文档说明可以有a Specification-Version和an Implementation-Version(以及两者的标题和供应商).但是没有正确解释规范和实现之间的区别.
我也看了不同的例子.
这里的规范和实现元数据究竟有什么区别?应该如何使用这些不同的属性(尤其是版本号)?规范和实现的供应商是如何有所不同的?
它甚至扮演了我放在那里的角色吗?
我首先尝试了对问题的一般描述,然后更详细地说明为什么通常的方法不起作用.如果你想阅读这些抽象的解释继续下去.最后,我解释了更大的问题和具体的应用程序,所以如果你想阅读它,请跳转到"实际应用程序".
我正在使用node.js子进程来完成一些计算密集型工作.父进程执行它的工作但在执行中的某个时刻它到达了一个点,在继续之前它必须具有来自子进程的信息.因此,我正在寻找一种等待子进程完成的方法.
我目前的设置看起来像这样:
importantDataCalculator = fork("./runtime");
importantDataCalculator.on("message", function (msg) {
if (msg.type === "result") {
importantData = msg.data;
} else if (msg.type === "error") {
importantData = null;
} else {
throw new Error("Unknown message from dataGenerator!");
}
});
Run Code Online (Sandbox Code Playgroud)
和其他地方
function getImportantData() {
while (importantData === undefined) {
// wait for the importantDataGenerator to finish
}
if (importantData === null) {
throw new Error("Data could not be generated.");
} else {
// we should have a proper data now
return …Run Code Online (Sandbox Code Playgroud) 我想打开检查失败时使用的几个"检查"和"测试"插件的报告文件.我知道无论原始任务是否被执行,我都可以使用"finalizedBy来执行另一个任务.使用这些知识,我只有在相应的任务(在这个例子中checkstyle)失败时才尝试以下方法打开报告:
task showCheckStyleResultsInBrowser(type: Exec) {
ext.htmlFileName = "main.html"
executable 'open'
args 'file:///' + checkstyleMain.reports.xml.destination.parent + "/" + ext.htmlFileName
}
task showCheckStyleResultsIfFailed {
ext.aCheckFailed = true
doLast {
if (ext.aCheckFailed) {
showCheckStyleResultsInBrowser.execute()
}
}
}
checkstyleMain {
finalizedBy 'showCheckStyleResultsIfFailed'
doLast {
// convert the xml output to html via https://stackoverflow.com/questions/20361942/generate-checkstyle-html-report-with-gradle
ant.xslt(in: reports.xml.destination,
style: new File('config/checkstyle/checkstyle-noframes-sorted.xsl'),
out: new File(reports.xml.destination.parent, showCheckStyleResultsInBrowser.htmlFileName))
showCheckStyleResultsIfFailed.aCheckFailed = false
}
}
Run Code Online (Sandbox Code Playgroud)
解释(据我所知):
showCheckStyleResultsInBrowser实际上是打开报告的任务.您可以忽略它实际执行的操作,但如果检查任务失败则应该执行该操作showCheckStyleResultsIfFailed任务声明一个属性aCheckFailed并将其初始化为true.执行时,它会检查它是否仍然为真(这意味着检查未成功完成),如果是,则使用打开报告showCheckStyleResultsInBrowser.checkstyleMain是执行实际检查的任务.我对它的结果很感兴趣.但是我不知道如何去做.因此,在checkStyleMain …我正在尝试编写一个Node.js程序来执行和监控javascript程序.我正在寻找一种方法来确定受监控的程序是否仍在"运行",即做任何有用的事情.
在我目前的方法中,当接收要测试的代码时,我启动一个新的子进程并将代码交给它.子进程检测代码使用Contextify创建Sandbox 并使用此沙箱执行代码.
在sandbox.run(code)调用返回后,我知道代码的阻塞部分已完成,并且可以在UI中显示.但是,我现在不知道代码是否使用setTimeouts注册了任何计时器,或者创建了任何其他事件源,这些事件源会导致部分代码稍后退出.所以我不知道它是否真的"完蛋"了.
在Node.js中是否有办法检查事件循环上是否还有事件需要处理(或者甚至更好,剩下多少)?
我发现了另一个问题,但它只讨论了如何监视事件循环以确定节点的性能是否仍然正常.但是我对性能不感兴趣(我不在乎执行代码是否阻塞了10s或者每2分钟只执行1ms)并且我不想使用外部工具但是要了解状态内部节点本身的事件循环.那可能吗?
我有一个由系统提供的东西列表(例如品牌),这些东西不是用户可编辑的,但必须不时更改.
这些内容显示在表视图中,可使用默认的UISearchDisplayController进行搜索.但是,由于事情列表肯定不完整,我想让用户能够请求在列表中添加其他内容.为此,我在原始表视图和搜索结果表视图中添加了一个表页脚视图,该视图提供了一个发送邮件的按钮.
只要搜索结果表视图仍包含条目,它就可以正常工作.我的表格页脚视图显示在搜索结果下方,一切正常.
但是,如果未找到搜索词的结果,搜索显示控制器将在表视图中心显示"无结果"标签.这通常看起来很棒,像这样:

但是由于我的tableFooterView仍然显示(我想要它!),"无结果"标签与我的页脚视图重叠,看起来很糟糕:

我认为在我的情况下我不需要"没有结果"的标签,因为我的页脚视图使得合理清楚地表明没有结果以及如何处理它.我也不介意,只要它不重叠.
我怎么能
如果这是不可能的,我也愿意接受其他方式显示页脚视图(而不是页脚)的建议,这不会有这个问题.但我喜欢这个解决方案,因为我可以在两种情况下使用它(普通表视图和搜索结果表视图),而不必更改任何内容.
我有一个UITableView嵌入在另一个视图中,如下所示:

导航控制器以模态方式显示,因此其布局应为全屏,而不依赖于故事板的任何其他部分.如果已使用固定的自动布局约束设置配置文件视图的上半部分,如下所示:
所以基本上,当屏幕较大时,容器视图应该填充剩余的空间.
在容器视图中,我嵌入了一个Table View(包括相应的控制器).为了使问题更加明显,我给容器视图一个绿色背景,表格视图为蓝色(这就是为什么节标题略微偏蓝).当然,我希望表视图填充整个容器视图.但这只发生在一定程度上:

因此表视图确实填充了整个容器视图(表视图的背景颜色为蓝色),但节标题位于低位.如果我向下滚动,则节标题保持在同一位置,但单元格向上移动并显示在其上方:

我已经尝试检查并取消选中表视图控制器的"扩展边缘"复选框,控制它是否扩展"在顶部条形图下","在底部条形图下"和"在不透明条形图下",但这没有帮助.它看起来好像表视图为导航栏和状态栏留出了空间,但它不应该,我不明白我怎么能使它正确地布局节标题和单元格.
任何想法为什么以及如何解决它?
按照“使用Gradle进行构建和测试”中的说明进行操作,我有一个这样的多项目gradle设置:
rootFolder
build.gradle
settings.gradle
EMS
build.gradle
cloud-sdk
build.gradle
Run Code Online (Sandbox Code Playgroud)
该cloud-sdk项目依赖于几个jar,部分通过maven解决,部分通过区域jar解决:
// file: cloud-sdk/build.gradle
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile group:'org.apache.tomcat', name:'tomcat-catalina', version:'7.0.47'
compile group:'org.mongodb', name:'mongo-java-driver', version:'2.11.3'
compile group:'com.google.code.gson', name:'gson', version:'2.2.4'
compile group:'com.thoughtworks.xstream', name:'xstream', version:'1.4.6'
compile fileTree(dir:'lib/', include:'JavaPNS_2.2.jar')
compile fileTree(dir:'lib/', include:'gcm-server.jar')
}
Run Code Online (Sandbox Code Playgroud)
-项目EMS取决于cloud-sdk,我认为应该这样定义:
// file: EMS/build.gradle
apply plugin: 'java'
dependencies {
compile project(':cloud-sdk')
}
Run Code Online (Sandbox Code Playgroud)
此外,我的根build.gradle和settings.gradle文件如下所示:
settings.gradle
include 'cloud-sdk', 'EMS'
Run Code Online (Sandbox Code Playgroud)
build.gradle
apply plugin: 'java'
dependencies {
compile project(':EMS')
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我不确定是否还需要依赖项compile project (':cloud-sdk') …
我想我已经阅读了完整的jQuery API文档,并在调试器中查看了jQuery对象和简单的DOM元素,以检查它们在运行时实际拥有的方法,但对于我的生活,我找不到一种方法来获取表示jQuery对象或DOM节点内容的html字符串.我错过了什么吗?
jQuery对象有方法html(),DOM元素具有属性,innerHTML但两者都只给出了对象的内部html.所以,如果我有这样的HTML:
<body>
<div>
<p>Hello World!</p>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我使用jQuery做这样的事情var $div = $body.find("div")然后我调用$div.html()返回的字符串是"<p>Hello World!</p>".但我正在寻找一种方法让它返回"<div><p>Hello World!</p></div>"(我不关心空白).
我究竟做错了什么?获取这些对象的html表示并不困难,可以吗?
在 Xcode 中
在 Xcode 6 中,当应用程序崩溃或调试器在断点处停止时,我们会在侧边栏中看到如下所示的堆栈跟踪:

我可以单击不同的堆栈帧/方法以跳转到代码中的位置并检查局部变量。但是,属于框架的几个堆栈帧被缩写。
在 Xcode 4 中,它看起来像这样:

请注意,底部有一个滑块。将它拖到最右边会显示所有堆栈帧并使它们都可以选择。
我需要 Xcode 6 中的该功能,所以我的问题是以下任何一个:
关于我的知识水平的一些背景知识:我目前正在尝试学习如何使用gradle构建项目.到目前为止,我没有很多构建工具的经验(几乎没有).我确实理解了一般的想法并且之前已经看过ant和maven文件但是从未自己编写过.到目前为止,我只是使用其他人构建脚本或使用Eclipse配置我的构建.所以我可能在这里完全错误的轨道,如果是这样,请指出我正确的方向.另外,遗憾的是,手工制作罐子的经验并不多.
我有一个Eclipse项目,我想编译成一个jar.必需的库jar位于我的本地文件系统上.我设法让gradle使用这些
dependencies {
compile fileTree(dir:'lib', include:'*.jar')
}
Run Code Online (Sandbox Code Playgroud)
另外我有我的源文件src/main/java,只是apply plugin: 'java'在文件中使用build.gradle.gradle build正如我所知,试图建立项目似乎做对了.
但是,据我所知,该库应该用在运行在tomcat上的web项目中,并使用tomcat提供的一些库.我正在使用javax.servlet.http.HttpServletRequest.该项目在Eclipse中运行良好,但我在我的Eclipse构建路径中添加了tomcat库.当我签入Eclipse时,我可以看到它javax.servlet.http.HttpServletRequest是servlet-api.jarTomcat库的一部分.
现在,当我构建项目时,我得到构建错误,因为java编译器找不到类,因为我没有servlet-api.jar在依赖项中指定.我想我可以以某种方式下载它(或者学习如何将它指定为外部依赖项以使gradle从某个存储库下载它)但我不确定这是否正确.
有没有办法告诉gradle使用Eclipse使用的相同库?或者其他一些告诉它所有tomcat jar的一般方法,就像我在Eclipse中简单地添加完整的Tomcat库一样?或者我真的需要另外一些这些罐子的副本,并且必须单独指定每一个?
另外,我是否需要将这些库jar添加到我的构建结果库jar中?据我所知,我需要添加任何依赖于生成的jar的jar.但话说回来,我已经读过一些地方,某些库是由tomcat自己提供的,所以它们必须是部署在它上面的任何战争的一部分.我很害怕,我被如何构建一个组合混淆罐子 -file在使用战争 -file要在部署tomcat的使用gradle这个,我不知道从哪个这些部分我的问题起源.我希望有人能够帮我解开思路并指出正确的方向,或者至少告诉我如何将Tomcat库中包含的jar添加到我的gradle依赖项中.
我有一个错误,过去在 Objective-C 中看起来像这样
NSString * const JKConfigurationErrorDomain;
typedef NS_ENUM(NSInteger, JKConfigurationCode) {
JKConfigurationCodeUnknown,
JKConfigurationCodeSomethingBad,
JKConfigurationCodeParsing,
};
Run Code Online (Sandbox Code Playgroud)
现在,这很难在 Swift 中使用。但是从 Swift 4 开始,我们可以使用NSErrorDomain和NS_ERROR_ENUM使 Swift 中的导入错误更好:
NSErrorDomain const JKConfigurationErrorDomain;
typedef NS_ERROR_ENUM(JKConfigurationErrorDomain, JKConfigurationCode) {
JKConfigurationCodeUnknown,
JKConfigurationErrorSomethingBad,
JKConfigurationErrorParsing,
};
Run Code Online (Sandbox Code Playgroud)
这意味着我现在可以在 Swift 中做这样的事情:
if let myError = error as? JKConfigurationError, myError.code = .somethingBad {
// handle it
}
Run Code Online (Sandbox Code Playgroud)
而不是必须强制转换error为NSError,然后检查它.domain然后查看.code哪个是整数等。
到现在为止还挺好。但是我的库被调用JKConfiguration并且那里已经有一个JKConfiguration对象(库的中心部分),一旦我开始使用JKConfiguration库代码中的任何地方,我就会收到一个错误:
在这种情况下,“JKConfiguration”对于类型查找是不明确的
我不明白,为什么?做什么NSErrorDomain或NS_ERROR_ENUM做什么使类型查找变得不明确,我该如何解决?
我已经尝试过的: …
gradle ×4
java ×4
ios ×3
objective-c ×3
event-loop ×2
jar ×2
javascript ×2
node.js ×2
uitableview ×2
autolayout ×1
build.gradle ×1
bytecode ×1
dom ×1
eclipse ×1
jquery ×1
json ×1
lldb ×1
manifest.mf ×1
stringify ×1
swift ×1
tomcat ×1
uistoryboard ×1
xcode ×1
xcode6 ×1