小编zar*_*tra的帖子

如何用Java 11生成代码,但要针对Java 8及更高版本?

我正在开发一个小型库,出于明显的原因,我想使用所有Java 11功能(我现在猜不到的模块除外)来生成代码,但是我希望该库与Java 8及更高版本兼容。

当我尝试这个:

javac -source 11 -target 1.8 App.java
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

warning: source release 11 requires target release 11
Run Code Online (Sandbox Code Playgroud)

...当我查看字节码时,我看到该类的版本为0x37(Java 11):

$ xxd App.class
00000000: cafe babe 0000 0037 ...
Run Code Online (Sandbox Code Playgroud)

Java 8无法加载它:

Exception in thread "main" java.lang.UnsupportedClassVersionError: App has been
    compiled by a more recent version of the Java Runtime (class file version 55.0),
    this version of the Java Runtime only recognizes class file versions up to 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at …
Run Code Online (Sandbox Code Playgroud)

java javac cross-compiling java-11

15
推荐指数
5
解决办法
4880
查看次数

在Google AppEngine中读取Java资源文件

我有一个Google AppEngine Java项目设置,调用BigQuery来显示查询作业的结果.我在这里可以找到我使用的示例代码和说明.该应用程序从我的开发计算机运行并检索查询,但是当我上传到AppEngine以在appspot.com上进行测试时,出现client_secrets.json文件(由于JavaScript URL授权,dev和appspot.com的不同文件)无法使用以下代码段:

  static GoogleClientSecrets getClientCredential() throws IOException {
if (clientSecrets == null) {

    clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
            new InputStreamReader(new FileInputStream(
                new File("WEB-INF/client_secrets.json"))));

  Preconditions.checkArgument(!clientSecrets.getDetails().getClientId().startsWith("Enter ")
      && !clientSecrets.getDetails().getClientSecret().startsWith("Enter "),
      "Enter Client ID and Secret from https://code.google.com/apis/console/?api=bigquery "
      + "into bigquery-appengine-sample/src/main/resources/client_secrets.json");
}
return clientSecrets;
Run Code Online (Sandbox Code Playgroud)

}

这是我的appengine-web.xml资源文件定义:

  <resource-files>
    <include path="**" />
  </resource-files>
Run Code Online (Sandbox Code Playgroud)

client_secrets.json文件在我的war文件中正确打包.我得到的错误是:

> /
Uncaught exception from servlet
java.io.FileNotFoundException: /base/data/home/apps/s~tactile-reason-849/1.385872137632330782/WEB-INF/client_secrets.json (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:171)
    at com.google.api.client.sample.bigquery.appengine.dashboard.ServiceUtils.getClientCredential(ServiceUtils.java:71)
    at com.google.api.client.sample.bigquery.appengine.dashboard.ServiceUtils.newFlow(ServiceUtils.java:103)
    at com.google.api.client.sample.bigquery.appengine.dashboard.MainServlet.initializeFlow(MainServlet.java:125)
    at com.google.api.client.extensions.servlet.auth.oauth2.AbstractAuthorizationCodeServlet.service(AbstractAuthorizationCodeServlet.java:124)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine google-bigquery

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

在内部类的扩展函数中使用限定的 this 访问外部作用域

为内部类创建扩展函数时,如何从内部类访问外部作用域?

例子

class A {
    inner class B {
        fun own() = this@A
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码按预期编译和执行。

当我添加以下扩展功能时

fun A.B.ext() = this@A
Run Code Online (Sandbox Code Playgroud)

编译失败

Error:(7, 22) Kotlin: Unresolved reference: @A
Run Code Online (Sandbox Code Playgroud)

我阅读了限定 this的文档,它简要提到了扩展功能,但没有任何示例。

是否可以从扩展函数访问外部作用域?

syntax kotlin

5
推荐指数
1
解决办法
207
查看次数

如何通过env-file设置环境变量

我有一个基于对弹簧导向一个Dockerfile 泊坞窗.我的应用程序消耗一些私有数据,所以我想通过环境变量传递这些参数.当我运行一个docker容器时:

docker run -p 8080:8080 -t myname/myapplication --env-file=~/env.list
Run Code Online (Sandbox Code Playgroud)

看来变量没有设置,应用程序看不到它们,我做错了什么?如何传递这些参数?

env.list:

ACCOUNT_ID=my_account_id
ACCOUNT_PASSWORD=my_secret_password
Run Code Online (Sandbox Code Playgroud)

我的ENTRYPOINT:

ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar $APPLICATION_NAME
Run Code Online (Sandbox Code Playgroud)

java environment-variables docker dockerfile

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

可执行文件在启动时说“第 1 行:ELF:未找到”

我尝试建立一个简单的你好,世界 ELF对我的路由器Xiaomi Router 3g使用cmake。它运行

Linux OpenWrt 4.14.95 #0 SMP Wed Jan 30 12:21:02 2019 mips GNU/Linux
Run Code Online (Sandbox Code Playgroud)

将 sdk 用于 ramips 平台(我的路由器平台)

这个想法是$(PKG_BUILD_DIR)用作目录来执行外部构建(通常通过mkdir build ; cd build ; cmake ..

构建成功完成,当我将它安装在我的路由器上并启动它时,它失败了:

Linux OpenWrt 4.14.95 #0 SMP Wed Jan 30 12:21:02 2019 mips GNU/Linux
Run Code Online (Sandbox Code Playgroud)

当我构建ELF没有cmake(

  1. 注释掉这一行include $(INCLUDE_DIR)/cmake.mk
  2. 取消注释$(CP) ...define Build/Prepare部分中的 行
  3. 消除define Build/Compile部分

),它工作得很好:它打印Hello, World! .

日志文件在 …

c linux openwrt cmake elf

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

一个更好的程序来评估数字的平方根

我是C编程语言的初学者,我被赋予这个任务来编写一个程序来计算自然数的平方根,而不使用math.h任何其他库函数,除了stdio.h.

看到我们int一直在使用,所以对于非方数,我们找到n的平方根的底限.现在我制作了这个程序,但它只适用于完美的正方形,但对于非正方形,它不起作用.我在这里引用它,我希望有一些方法可以修改它.

#include <stdio.h> 
main() 
{    
    int a;
    scanf("%d", &a);
    int s = 1, l = a, mid = 0;
    while(s < l)
    { 
      mid=(s + l)/2;
      if((mid * mid) == a)
      {
          break;
      }
      else if ((mid * mid) < a)
      {
          s = mid + 1;
      }
      else
      {
          l = mid;
      }

    }   
    printf("%d", mid);
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助,请尽可能纠正我.

编辑:很抱歉给您带来不便.

c algorithm

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

SQL - UPDATE/SET语句查询

我想从SQL 2008 R2中维护的数据库中的表中更新1列.

整个列包含相同的数据类型int值,我想更改为相同int数据类型的不同值.

我们什么时候在SET语句中使用单撇号以及何时避免或不使用它?

UPDATE TABLENAME
SET COLUMNNAME = X

要么

UPDATE TABLENAME
SET COLUMNNAME = 'X' 

感谢任何建议/建议.谢谢.

sql sql-server sql-server-2008-r2

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