在没有操作系统运行的情况下,如何单独运行程序? 你能创建计算机在启动时可以加载和运行的汇编程序吗?例如,从闪存驱动器启动计算机,它运行CPU上的程序?

是否有可能检查bash脚本语法而不执行它?

使用Perl,我可以运行Perl -c '脚本名称'。bash脚本是否有等效的命令?

我有OwinStartup配置代码完美地工作,然后它停止工作。不幸的是,我不确定我到底做了什么来让它停止工作,我有一个非常困难的时间来弄清楚。

为了确保我掌握了基本知识,我反复检查以确保我掌握了

[assembly:OwinStartup(typeof(WebApplication.Startup))] 

属性正确分配,并确保我没有一个appSetting为owin:AutomaticAppStartup,设置为false,所以我做了一个设置为true,以确保安全,因为之前没有什么。

<add key="owin:AutomaticAppStartup" value="true" />

我还尝试特别调用appSetting:

<add key="owin:appStartup" value="WebApplication.Startup" />

在它停止工作之前,我将microsoft . owen . security NuGet包升级到2.0.2,所以我尝试将它们恢复到2.0.1(这很痛苦),但它没有改变任何东西。我在项目上安装了WebActivator,并使用它来引导其他东西,但我已经在一个新的WebApplication模板上进行了测试,它在那里工作,所以我不认为这是罪魁祸首。

我还尝试删除我的启动类,并使用Visual Studio在添加新项目中使用OWIN启动类类型添加一个新的,并且也没有被调用。接下来,我尝试添加第二个Startup类,因为我知道如果定义了多个OwinStartup属性,它将抛出异常,但它没有抛出任何异常。

不知道还能试什么。任何想法吗?

更新

原来Resharper删除了对Microsoft.Owin.Host.SystemWeb的引用,当我使用它删除未使用的引用时。

我是Angular.js的新手,试图理解它与Backbone.js的不同之处……我们曾经在使用Backbone时使用Require.js来管理我们的包依赖关系。对Angular.js做同样的事情有意义吗?

我如何删除在IntelliJ行结束后移动光标的能力?

我正在尝试使用Composer安装包的特定版本。我尝试了composer install和composer require,但他们正在安装最新版本的软件包。如果我想要一个旧版本呢?

我尝试将本地.jar文件依赖项添加到构建中。gradle文件:

apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDir 'src/model'
        }
    }
}

dependencies {
    runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
} 

您可以看到,我将.jar文件添加到这里的referencedLibraries文件夹:https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries

但问题是,当我在命令行上运行命令:gradle build时,我得到以下错误:

error: package com.google.gson does not exist
import com.google.gson.Gson;

这是我的全部回购:https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1

在左列中减少显示行号的命令是什么?

在我的办公室里,仅仅提到Xerces一词就足以激起开发商的愤怒。粗略地看一下Xerces关于SO的其他问题,似乎表明几乎所有Maven用户都在某个时刻被这个问题“触动”了。不幸的是,了解这个问题需要一些关于薛西斯历史的知识。。。

历史

Xerces是Java生态系统中使用最广泛的XML解析器。几乎每一个用Java编写的库或框架都在某种程度上使用Xerces(如果不是直接使用的话,也是过渡使用的)。到目前为止,官方二进制文件中包含的Xerces jar还没有版本。例如,Xerces 2.11.0实现jar名为xercesImpl.jar,而不是xercesImpl-2.11.0.jar。Xerces团队不使用Maven,这意味着他们不使用将官方版本上传到Maven Central。Xerces以前是作为一个单独的jar(Xerces.jar)发布的,但被分成两个jar,一个包含API(xmlapis.jar),另一个包含这些API的实现(xercesImpl.jar)。许多旧的Maven POM仍然声明对Xerces.jar的依赖。在过去的某个时候,Xerces也被发布为xmlParserAPIs.jar,一些旧的POM也依赖于此。将jar部署到Maven存储库的人员分配给xmlapi和xercesImpl jar的版本通常不同。例如,xml api的版本可能为1.3.03,xercesImpl的版本可能是2.8.0,尽管两者都来自Xerces 2.8.0。这是因为人们经常用它实现的规范版本来标记xmlapis jar。这里有一个非常好的,但不完整的分解。更复杂的是,Xerces是JRE中包含的Java API for XML Processing(JAXP)参考实现中使用的XML解析器。实现类在com.sun.*命名空间下重新打包,这使得直接访问它们很危险,因为它们在某些JRE中可能不可用。然而,并非所有Xerces功能都通过java.*和javax.*API公开;例如,没有公开Xerces序列化的API。更令人困惑的是,几乎所有的servlet容器(JBoss、Jetty、Glassfish、Tomcat等)都在一个或多个/lib文件夹中附带Xerces。

问题

冲突解决方案

出于上述原因组织在其聚甲醛。如果您有一个小型应用程序,并且只使用Maven Central,这并不是一个真正的问题,但对于Artifactry或Nexus代理多个存储库(JBoss、Hibernate等)的企业软件来说,这很快就会成为一个问题:

例如,组织A可以将xmlapi发布为:

<groupId>org.apache.xerces</groupId>
<artifactId>xml-apis</artifactId>
<version>2.9.1</version>

同时,组织B可能会发布与以下内容相同的jar:

<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.3.04</version>

虽然B的jar比a的jar版本低,但Maven不知道它们是同一个工件,因为它们有不同的组ID。因此,它无法执行冲突解决和两者jar将作为已解析的依赖项包含:

Classloader地狱

如上所述,JRE在JAXP RI中随Xerces一起提供。虽然最好将所有Xerces Maven依赖项标记为<exclusion>或<provided>,但您依赖的第三方代码可能与您使用的JDK的JAXP中提供的版本兼容,也可能不兼容。此外,servlet容器中还提供了Xerces jar以应对。这给您留下了许多选择:您是否删除servlet版本并希望容器在JAXP版本上运行?离开servlet版本,并希望您的应用程序框架在servlet版本上运行是不是更好?如果上面列出的一个或两个未解决的冲突成功地渗入到您的产品中(在大型组织中很容易发生),您很快就会发现自己处于类加载器的地狱中,想知道类加载器在运行时选择的是哪个版本的Xerces,以及它是否会在Windows和Linux中选择相同的jar(可能不会)。

解决?

我们已经尝试将所有Xerces Maven依赖项标记为<provided>或<exclusion>,但这很难实施(尤其是在大型团队中),因为工件有太多别名(xmlapi、Xerces、xercesImpl、xmlParserAPI等)。此外,我们的第三方libs/framework可能无法在JAXP版本或servlet容器提供的版本上运行。

我们如何用Maven最好地解决这个问题?我们是否必须对依赖项进行细粒度控制,然后依赖分层类加载?是否有某种方法可以全局排除所有Xerces依赖项,并强制所有框架/库使用JAXP版本?


更新:Joshua Spiewak已将Xerces构建脚本的补丁版本上传到XERCESJ-1454,允许上传到Maven Central。投票/观看/贡献这个问题,让我们一劳永逸地解决这个问题。

我可以将变量作为命令行参数传递给GNUMakefile吗?换句话说,我想传递一些参数,这些参数最终将成为Makefile中的变量。