小编use*_*095的帖子

如何在build.gradle中使用gradle属性

当我运行此任务时:

task tmpTask << {
    project.properties.each {println "   $it"}
}
Run Code Online (Sandbox Code Playgroud)

我知道了:

org.gradle.java.home=/usr/lib/jvm/java-6-oracle
Run Code Online (Sandbox Code Playgroud)

但是如何使用这个变量呢?我试过了两个:

task tmpTask << {
    println org.gradle.java.home
    println project.properties.org.gradle.java.home
}
Run Code Online (Sandbox Code Playgroud)

但这一切都不起作用.首次打印出错:

Could not find property 'org' on task ':tmpTask'.
Run Code Online (Sandbox Code Playgroud)

而第二个失败的是:

Cannot get property 'gradle' on null object
Run Code Online (Sandbox Code Playgroud)

groovy java-home gradle

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

在gradle中定义javah任务的最佳方法

我很擅长gradle和groovy.这是我生成JNI标头的任务:

apply plugin: 'java'
apply plugin: 'application'

mainClassName = "com.my.example.HelloG"

task GenerateJniHeaders(dependsOn: 'classes') << {
    def classpath = "build/classes/main"
    def nativeIncludes = "src/native/include"
    "javah -d ${nativeIncludes} -classpath ${classpath} ${mainClassName}".execute()
}
classes.finalizedBy GenerateJniHeaders
build.dependsOn GenerateJniHeaders
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我觉得它有点难看.我怎样才能改进它?我感谢任何建议,特别是那些帮我删除硬编码的变量的建议.我还想使这个任务更通用 - 现在它只为主类生成JNI头,但我想为所有java文件运行它.此外,当此任务失败时(例如,类路径错误),它不会打印任何错误消息并构建成功,这会产生误导.

java java-native-interface groovy gradle

10
推荐指数
1
解决办法
2211
查看次数

如何在Android中使用Intent连接到已知的WiFI?

我有这样的事情:

wifiNetworks = (ArrayList<ScanResult>) mWifiManager.getScanResults();
Run Code Online (Sandbox Code Playgroud)

现在我可以简单地获得wifi SSID:

wifiNetworks.get(0).SSID
Run Code Online (Sandbox Code Playgroud)

我不知道网络是WEP,WPA,它是否有密码,所以我只想创建一个Intent,把SSID或ScanResult放到设置或任何地方,以便让用户输入密码和连接到该网络.可能吗?如果没有,获取网络类型信息并以编程方式连接的最简单方法是什么?

android connect wifi android-intent

6
推荐指数
1
解决办法
2532
查看次数

有没有办法让文件大小只有FileDescriptor?

我们假设我有一个有效的Java FileDescriptor,我用这种方式:

FileInputStream is = new FileInputStream("/some/path/to/file.txt");
FileDescriptor fd = is.getFD();
Run Code Online (Sandbox Code Playgroud)

现在请忘记我知道文件路径.我唯一拥有的是一个FileDescriptor.有没有一种简单的方法来了解文件大小?现在我检查过:

  1. FileDescriptorvalid()方法可以告诉我它是否有效但没有length()size()功能.
  2. FileInputStream 不返回路径,因为它是一个流,它显然不会告诉我文件大小.
  3. File(http://docs.oracle.com/javase/7/docs/api/java/io/File.html)其中有length()方法没有能够处理FileDescriptor的构造函数.

我知道我可以阅读整个流并总结长度,但我不认为它是简单的方法.

java file file-descriptor

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

无法初始化constexpr

使用clang(版本3.0-6ubuntu3)编译此代码时:

constexpr int foo(const int n) {
    return n + 1;
}

int main(void) {
    constexpr int x = 5 * 4 + 12 + 8;
    constexpr int y = foo(x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用此命令:

clang -std=c++11 -c constexprExample.cpp
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:constexpr变量'y'必须由常量表达式初始化

代码或编译器有问题吗?

c++ clang constexpr c++11

2
推荐指数
1
解决办法
271
查看次数

同步此对象和其他对象

我认为这个问题肯定是在某个地方被问到的,但是当我寻找它时,我很遗憾地只找到了不同的主题.无论如何这里是代码:

public class A {
    Object lockX = new Object();
    Object lockY = new Object();
    Object lockZ = new Object();
    int c1;
    int c2;

    public void foo1() {
        synchronized(lockX) {
            c1++;
        }
    }

    public void bar1() {
        synchronized(lockY) {
            c1++;
        }
    }

    public void foo2() {
        synchronized(lockZ) {
            c2++;
        }
    }

    public void bar2() {
        synchronized(this) {
            c2++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上foo1和bar1不正确.它们使用不同的锁来保护c1,因此事实上c1将不受保护,并且这两个函数可以同时运行.然而我的问题是关于foo2和bar2.他们还好吗?它们也使用不同的锁,但是bar2锁定了整个对象,所以它是否可以防止同时修改c2?

java synchronization

0
推荐指数
1
解决办法
57
查看次数