小编gum*_*ins的帖子

SpringBoot完全可执行jar,里面没有依赖项

注意:在将此问题标记为重复之前,请确保您知道可执行JAR完全可执行的SpringBoot JAR之间的区别.

官方的Spring Boot文档描述了如何构建完全可执行的JAR.然后生成的JAR文件可以/etc/init.d/作为普通的unix服务链接和启动/停止/重新启动/统计,而无需其他脚本或工具(如JSVC).

但是生成的JAR包含所有库,并且可以足够大(在我的情况下为70Mb +).

我想生成没有库的完全可执行的JAR,但是能够在Linux上以SystemV服务的形式运行它并以某种方式链接外部库(JAR).

UPDATE

我想减少工件大小,以加快deploy-> test-> fix cycle.有时我通过移动网络工作,大文件大小会大大降低我的工作速度.

如果没有简单的配置属性或配置文件或命令行选项,我会使用一种黑客.

一开始,我可以生成一个包含所有依赖项的构建.然后我可以解压缩它并将所有库移动到一个特殊的文件夹.

然后我需要以某种方式再次打包它作为完全可执行文件并运行指向带有库的文件夹.

我不认为这可以用jar实用file程序完成,因为实用程序将完全可执行的jar识别为data

$ file fully-executable.jar
file fully-executable: data
Run Code Online (Sandbox Code Playgroud)

不像通常的罐子

$ file usual.jar
usual.jar: Java Jar file data (zip)
Run Code Online (Sandbox Code Playgroud)

java executable-jar maven spring-boot spring-boot-maven-plugin

8
推荐指数
1
解决办法
5755
查看次数

扩展Javascript承诺并在构造函数中解析或拒绝它

我想使用ES6语法扩展本机Javascript Promise类,并能够在子类构造函数中调用一些异步函数。基于异步功能的结果,承诺必须被拒绝或解决。

但是,then调用函数时会发生两个奇怪的事情:

  1. 子类构造函数执行两次
  2. 引发“未捕获的TypeError:承诺解决或拒绝函数不可调用”错误

    class MyPromise extends Promise {
        constructor(name) {
            super((resolve, reject) => {
                setTimeout(() => {
                    resolve(1)
                }, 1000)
            })

            this.name = name
        }
    }

    new MyPromise('p1')
        .then(result => {
            console.log('resolved, result: ', result)
        })
        .catch(err => {
            console.error('err: ', err)
        })
Run Code Online (Sandbox Code Playgroud)

javascript inheritance es6-promise es6-class

7
推荐指数
3
解决办法
2020
查看次数

在Javascript中获取所有对象引用

请考虑以下代码:

var ob = {}
var ref1 = ob;
var ref2 = ob;
var ob2 = { ref3: ob };
Run Code Online (Sandbox Code Playgroud)

现在我想通过其中一个获得对象的所有4个引用的列表(ob,ref1,ref2,ob2.ref3)

可能吗?有没有办法获取信息对象有多少引用,如果没有?

UPDATE

说明

我需要在第三方类层次结构中注册一个类实例而不是之前的实例,我需要知道引用旧实例的位置

javascript

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

注释掉Vue模板元素的一部分

有时需要注释掉某些元素属性而不必记住它,以便在某些测试后快速恢复它。

使用HTML注释语法可以注释掉整个元素

<div>
    <!-- <h2>Hello</h2> -->
    <span>hi</span>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于单个属性(导致渲染错误)

<my-comp id="my_comp_1"
         v-model="value"
         <!-- :disabled="!isValid" -->
         @click="handleClick">
</my-comp>
Run Code Online (Sandbox Code Playgroud)

我以前可以看到和使用的最佳方法是通过复制整个元素及其设置v-if="false"(或注释掉整个复制的元素)进行标签备份,然后继续尝试原始的

syntax comments vuejs2

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

VSCode 会自动将多行代码格式化为一行代码

我非常喜欢自动格式化代码的想法。您可以使用 eslint 规则来配置您喜欢的代码风格。但一些隐藏规则导致了我不喜欢的情况:内联文档销毁道具或 jsx 模板元素属性。

示例(这就是我想要的)。

const {
  foo: 1,
  bar: 2,
  baz: 3,
} = require('qux')
Run Code Online (Sandbox Code Playgroud)

这是 VSCode 或其某些插件如何重新格式化它的方式(不确定)

const { foo: 1, bar: 2, baz: 3 } = require('qux')
Run Code Online (Sandbox Code Playgroud)

当行长度超过某个指定限制时,将其重新格式化回多行是绝对可以的。

JSX 示例(尝试使用使用生成的新项目react-create-app)。

  1. 好的,这行太长了,因此 VSCode 将其重新格式化为多行

    <a
      className="App-link"
      href="https://reactjs.org"
      target="_blank"
      rel="noopener noreferrer"
    >
    
    Run Code Online (Sandbox Code Playgroud)
  2. 线条长度不会超过允许的长度,但我仍然喜欢这种风格

    <a
      className="App-link"
      href="https://reactjs.org"
    >
    
    Run Code Online (Sandbox Code Playgroud)
  3. 但 VSCode/plugin 有不同的偏好,并将其重新格式化为

    <a className="App-link" href="https://reactjs.org">
    
    Run Code Online (Sandbox Code Playgroud)

我试图找到一个特定的 eslint 规则来解释这种行为,但没有成功(未找到)。我尝试将默认的 vscode 格式化程序从 更改为prettier-null没有成功。

对我来说还有一件奇怪的事情:VSCode 不会突出显示它将重新格式化的代码片段。

那么如何解决呢?

更新

我希望 VSCode 在此类代码部分中做的唯一一件事就是将一行分成多行,以防该行超出eslint max-len值。

javascript code-formatting jsx visual-studio-code prettier

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

Android系统.在WebView.evaluateJavascript执行后不调用onReceiveValue方法

我已经使用Android Studio 1.5.1基于Login Form模板创建了一个新项目,并根据我的需要对其进行了少量修改.

这是build.gradle内容

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
    applicationId "com.mia.jsrun"
    minSdkVersion 19
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    }
    buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile 'com.android.support:design:23.2.0'
}

allprojects {
    buildDir = "/tmp/${rootProject.name}/${project.name}"
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试代码

private void test() {
    Log.d(TAG, "inside test()"); // is printed
    WebView webview = new WebView(this); …
Run Code Online (Sandbox Code Playgroud)

android android-webview

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

什么原因指定InitialHeapSize超过1米?

我理解为什么要指定MaxHeapSize - 它是JVM可以分配的上限.

是否有任何理由指定InitialHeapSize超过1m(甚至1k)?无论如何,一旦应用程序分配了内存量JVM将扩展它.

java heap-memory

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

在Intellij IDEA项目视图中,模块名称中的数字是什么意思?

我相信那是"静态网络"模块.

Intellij IDEA 14项目视图

请注意屏幕截图上的"6"号码.我不知道它什么时候出现,它意味着什么.

intellij-idea

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

内联创建的InputStream是否由GC自动关闭?

我发现了几个类似的问题,但我仍然无法找到问题的答案.

我知道关闭外部流就足够了,它会关闭在线创建的内部流.

BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
br.close();
Run Code Online (Sandbox Code Playgroud)

考虑下一个例子

Properties props = new Properties();
props.load(new FileInputStream(configPath));
Run Code Online (Sandbox Code Playgroud)

是应该将FileInputStream其分配给变量然后显式关闭(或者使用try-with-resource构造),还是Java GC会在props.load()方法调用之后立即自动关闭它,因为没有对资源的引用?

java garbage-collection inputstream

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