小编Thu*_*rge的帖子

Mac OS X上的Java安装位置在哪里?

我刚刚从下载在Mac OS 10.7.5的Java 7u17 这里,然后安装成功.为了做一些JNI编程,我需要知道在Mac上安装Java的位置.

我以为在/Library/Java/JavaVirtualMachines/文件夹里面会有一个名为1.7.0.jdk或者什么的文件夹,但后来我发现文件夹是空的.通过ls /Library/Java/JavaVirtualMachines/终端运行证实了这一点.我已经尝试搜索它以查明它是否安装在其他地方,但这似乎并没有改变任何东西.

有人可以告诉我Mac上安装Java的位置吗?

java macos

691
推荐指数
15
解决办法
64万
查看次数

如何检查Java 7路径的扩展名

我想检查Path(在Java 7中引入)是否以某个扩展名结尾.我试过这样的endsWith()方法:

Path path = Paths.get("foo/bar.java")
if (path.endsWith(".java")){
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用,因为path.endsWith(".java")返回false.endsWith()如果在最终目录分隔符(例如bar.java)之后的所有内容完全匹配,则该方法似乎仅返回true ,这对我来说不实用.

那么我该如何检查Path的文件扩展名呢?

java path java-7

66
推荐指数
3
解决办法
5万
查看次数

在没有Maven的情况下在Eclipse中创建src/main/java文件夹结构

如何在没有Maven的情况下在Eclipse中创建src/main/javasrc/test/java我的默认Web应用程序项目?我当前的文件夹结构是

 TestApp
       -JavaResources
         - src  
           - com.mypackage
       -WebContent
Run Code Online (Sandbox Code Playgroud)

java eclipse web-applications

61
推荐指数
3
解决办法
8万
查看次数

为什么GCC不能优化C++中空指针的删除?

考虑一个简单的程序:

int main() {
  int* ptr = nullptr;
  delete ptr;
}
Run Code Online (Sandbox Code Playgroud)

对于GCC(7.2),在结果程序中有call关于的指令operator delete.对于Clang和Intel编译器,没有这样的指令,空指针删除被完全优化(-O2在所有情况下).你可以在这里测试:https://godbolt.org/g/JmdoJi.

我想知道这样的优化能否以某种方式与GCC一起开启?(我更广泛的动机源于自定义swapvs std::swap可移动类型的问题,其中删除空指针可能代表第二种情况下的性能损失; 有关详细信息,请参阅/sf/answers/3198249771/.)

UPDATE

为了澄清我对这个问题的动机:如果我在移动赋值运算符和某个类的析构函数中使用delete ptr;if (ptr)保护,那么该类的对象将产生3个GCC指令.这可能是相当大的性能损失,例如,在对这些对象的数组进行排序时.std::swapcall

此外,我可以if (ptr) delete ptr;在任何地方写作,但是想知道,这是否也不能成为性能损失,因为delete表达式也需要检查ptr.但是,在这里,我想,编译器只会生成一个检查.

此外,我真的很喜欢delete没有后卫的可能性,这对我来说是一个惊喜,它可以产生不同的(表现)结果.

UPDATE

我只是做了一个简单的基准测试,即排序对象,它们delete在移动赋值运算符和析构函数中调用.来源是:https://godbolt.org/g/7zGUvo

std::sort使用GCC 7.1测量的运行时间和-O2Xeon E2680v3上的标志:

链接代码中存在一个错误,它会比较指针,而不是指向值.更正结果如下:

  1. 没有if后卫:17.6 [s] 40.8 [s], …

c++ null gcc compiler-optimization delete-operator

46
推荐指数
5
解决办法
5976
查看次数

Java NIO中File.deleteOnExit()的替代方案?

Java IO具有File.deleteOnExit(),这是一种删除在JVM正常终止期间调用它的文件的方法.我发现这对于清理临时文件非常有用,特别是在单元测试期间.

但是,我没有在Java NIO的Files类中看到同名的方法.我知道我能做到path.toFile().deleteOnExit(),但我想知道是否有使用NIO的替代方案.

还有其他选择吗?如果没有,为什么没有?

java nio

35
推荐指数
3
解决办法
2万
查看次数

Lombok项目是否支持Java 9?

我在我的项目中使用了龙目岛,但我的同事不同意使用它,他的理由是(来自lombok文件的争议)

这两个项目Lombok都利用非公共API来完成他们的巫术.这意味着使用后续IDE或JDK版本可能会破坏Project Lombok的风险.

但这是一篇2010年写的非常古老的文档,也许现在已经解决了这个问题,所以我想知道Lombok是否支持Java 9并且它仍然使用非公共API:s?

lombok java-9

35
推荐指数
1
解决办法
1万
查看次数

如何等待Selenium中的元素不再存在

我正在测试用户单击删除按钮的UI,表条目消失.因此,我希望能够检查表条目不再存在.

我试过使用ExpectedConditions.not()反转ExpectedConditions.presenceOfElementLocated(),希望它意味着"期望不存在指定的元素".我的代码是这样的:

browser.navigate().to("http://stackoverflow.com");
new WebDriverWait(browser, 1).until(
        ExpectedConditions.not(
                ExpectedConditions.presenceOfElementLocated(By.id("foo"))));
Run Code Online (Sandbox Code Playgroud)

但是,我发现即使这样做,我也会得到TimeoutExpcetion一个NoSuchElementException说法,即元素"foo"不存在.当然,没有这样的元素是我想要的,但我不想抛出异常.

那么我怎么能等到一个元素不再存在?我希望一个不依赖于捕获异常的示例(如我所知),应该抛出异常以用于异常行为).

java selenium selenium-webdriver

31
推荐指数
2
解决办法
5万
查看次数

为什么JSLint希望我使用双引号而不是单引号?期待'''而不是看'''

我最近开始看到JSLint发出以下警告:

JSLint:期待'''而不是'''.

换句话说,它希望我使用双引号而不是单引号.为什么JSLint会对此发出警告?在JavaScript中,单引号和双引号是否或多或少可互换,仅受程序员的偏好?

javascript jslint

30
推荐指数
2
解决办法
5935
查看次数

什么是Java中的"常规文件"?

BasicFileAttributes类用于检查文件系统中文件的属性,其方法为isRegularFile().不幸的是,Javadoc描述相当缺乏:

判断文件是否是包含不透明内容的常规文件.

这是什么意思?具有不透明内容的常规文件究竟是什么?我可以从类中的其他方法看出它不是目录或符号链接,所以我倾向于认为它是其他所有东西.但是,显然存在某种类型的"不规则文件",因为存在一个名为isOther()的方法,如果它不是目录,符号链接或"常规文件",则返回true.

那么Java中的常规文件到底是什么?

java nio

29
推荐指数
3
解决办法
1万
查看次数

Tomcat 8中的HTTP/2支持

经过一些研究,我很惊讶我没有在Tomcat中找到任何有关HTTP/2支持的资源.更改日志8.0表示SPDY的实验支持,wiki将HTTP/2称为支持的规范(http://wiki.apache.org/tomcat/Specifications),但我没有找到任何教程.

你知道是否已经可以在Tomcat上启用HTTP/2了吗?如果答案是肯定的我怎么能这样做?

tomcat tomcat8 http2

19
推荐指数
3
解决办法
8233
查看次数