我刚刚开始接触Nix,如果我在文档中错过了我的问题的答案,那么道歉.
我想使用Nix来设置一个安全的生产机器,其中包含最少的库和可执行文件.我不希望出现任何编译器或其他构建工具,因为这些可能存在安全风险.
当我安装一些软件包时,它们似乎只依赖于最小的运行时依赖项集.例如,如果我安装,apache-tomcat-8.0.23
那么我得到一个Java运行时(JRE)和包含Tomcat的预构建JAR文件.
另一方面,一些软件包似乎包含一个完整的构建工具链作为依赖项.以另一个基于Java的示例为例,当我安装spark-1.4.0
Nix 时,请下载包含编译器的Java开发工具包(JDK),它还会提取Maven构建工具等.
所以,我的问题如下:
非常感谢.
我正在尝试使用Shake来构建Java代码,由于javac编译器的不寻常特性,我有点卡住了.通常,对于大型项目的每个模块,将使用该模块的所有源文件作为输入调用编译器,并在一次传递中生成所有输出文件.随后我们通常采用编译器生成的.class文件并将它们组装成JAR(基本上只是一个ZIP).
例如,典型的Java模块项目安排如下:
src
包含多个.java文件的目录,其中一些嵌套在树的深层.bin
包含编译器输出的目录.典型地,这输出遵循相同的目录结构和文件名,以.class
取代对每个java文件,但该映射是不必然一到一种:单java文件可以产生零到许多.class文件!因此,我想在Shake中定义的规则如下:
1)如果下面的任何文件src
比任何文件更新,bin
则擦除所有内容bin
并重新创建:
javac -d bin <recursive list of .java files under src>
我知道这个规则似乎过多,但是如果不调用编译器,我们就无法知道输出的变化程度,即使是单个输入文件中的一个小变化也是如此.
2)如果任何文件bin
比新文件更新,module.jar
则重新创建module.jar
:
jar cf module.jar -C bin .
非常感谢!
PS响应"只使用Ant/Maven/Gradle /"将不胜感激!我知道这些工具提供开箱即用的Java编译,但它们更难以编写和聚合.这就是为什么我想试验一个基于Haskell/Shake的工具.
我有一个组件,它使用一个实例<iron-ajax>
从后端检索数据,我想<iron-request>
用来发送更新,如POST/DELETE请求.
第一次一切都很完美.但是,如果再次调用请求,我会收到错误:
未捕获的TypeError:无法读取未定义的属性'then'
我的模板定义如下所示:
...
<iron-ajax id="ajax" auto verbose
url="/cart-api/"
last-response="{{ajaxResponse}}"
handle-as="json">
</iron-ajax>
<iron-request id="xhr"></iron-request>
...
Run Code Online (Sandbox Code Playgroud)
在我的组件脚本中,我使用发送POST 的send()
方法<iron-request>
:
var me = this;
this.$.xhr.send({
url: "/cart-api",
method: "POST",
body: JSON.stringify(entry)
}).then(function() {
me._refresh();
}, function() {
console.error("POST failed");
});
Run Code Online (Sandbox Code Playgroud)
错误消息表明send
已返回undefined
而不是有效的Promise对象.
所以我的问题是:一个<iron-request>
元素实际上是可重用的吗?我是否需要做任何事情来刷新或重新初始化它?
UPDATE
感谢@Zikes我更新了我的代码如下:
<iron-ajax id="ajaxGet" auto
url="/cart-api/"
last-response="{{ajaxResponse}}"
handle-as="json">
</iron-ajax>
<iron-ajax id="ajaxPost" url="/cart-api" method="POST" on-response="_refresh"></iron-ajax>
<iron-ajax id="ajaxDelete" method="DELETE" on-response="_refresh"></iron-ajax>
Run Code Online (Sandbox Code Playgroud)
insertEntry: function(entry) {
this.$.ajaxPost.body = JSON.stringify(entry);
this.$.ajaxPost.generateRequest();
}, …
Run Code Online (Sandbox Code Playgroud) 我正在寻找以下并发语义的Java实现.我想要ReadWriteLock
除了对称之外的类似的东西,即读取和写入两个端口可以在许多线程之间共享,但是read不包括写入,反之亦然.
是否有现成的库类可以实现这一目标?目前我用a近似了所需的功能,ReadWriteLock
因为幸运的是在锁B的上下文中完成的任务有点罕见.虽然它感觉像是一个黑客,它可能会影响我的程序在重负载下的性能.
我正在尝试使用cabal沙箱构建Elm平台.然而,安装失败,并显示消息"重新安装可能会破坏软件包".在我看来,这与沙盒的整个目的相矛盾,我认为沙盒应该避免这种错误.
任何人都可以为我解释这个错误,甚至更好地帮助我继续安装Elm?添加是否安全--force-reinstalls
?
以下是我执行的命令序列:
cabal sandbox init
cabal update
cabal install -j elm-compiler-0.14 elm-package-0.2 elm-make-0.1 elm-reactor-0.2 elm-repl-0.4
Run Code Online (Sandbox Code Playgroud)
我在Mac OS 10.10上使用了cabal 1.22.0.0和GHC 7.8.2.完整输出如下:
Resolving dependencies...
In order, the following would be installed:
Diff-0.3.0 (new package)
HUnit-1.2.5.2 (new package)
ansi-terminal-0.6.2.1 (new package)
ansi-wl-pprint-0.6.7.1 (new package)
async-2.0.2 (new package)
blaze-markup-0.6.2.0 (new package)
blaze-html-0.7.0.3 (new package)
byteable-0.1.1 (new package)
bytestring-mmap-0.2.2 (new package)
bytestring-trie-0.2.4 (new package)
cereal-0.4.1.1 (new package)
cmdargs-0.10.12 (new package)
concatenative-1.0.1 (new package)
cookie-0.4.1.4 (new package)
cryptohash-0.11.6 (new package)
enumerator-0.4.20 …
Run Code Online (Sandbox Code Playgroud) 我对组件变为活动时调用哪个函数Activate函数或绑定函数的顺序感到困惑.在我看来,首先会调用activate函数函数,因为Bind函数用于绑定服务.但是,正如我们所知,所有目标服务首先进入组件上下文,然后组件被激活.
请清除我的怀疑.
也许这是一个愚蠢的问题,但是测试Java Archive(jar)文件是否是OSGi包的最佳方法是什么?也就是说,jar完全兼容的最低要求是什么?是仅仅存在META-INF/MANIFEST.MF(我不这么认为)?如果没有,该文件必须提供的最小字段是什么?
实际上,我应该如何测试jar是否是OSGi jar?
我有一项任务是通过BACnet TCP/IP从Trane Tracer summitBCU通信和读取BACnet对象列表及其属性.但是,我不知道从BCU获取BACnet对象列表的BACnet服务.每个人都可以教我如何做到这一点!
我有可嵌入的菲利克斯.我有一些API包和Impl.API导出接口C
.Impl导入该接口并在激活器中注册impl.现在我想得到C impl otside OSGi
FrameworkFactory ff = new FrameworkFactory();
...
BundleContext bc = fwk.getBundleContext();
...
final ServiceReference[] serviceReferences = bc.getServiceReferences(C.class.getName(), "(objectclass=" + C.class.getName() + ")");
for(ServiceReference serviceReference : serviceReferences){
final Object service = bc.getService(serviceReference);
...
}
Run Code Online (Sandbox Code Playgroud)
现在我想与它互动.我可以用反射来做
System.out.println(service.getClass().getMethod("some").invoke(service)); //using
Run Code Online (Sandbox Code Playgroud)
但我无法施展它
System.out.println(service instanceof C); //prints false
Run Code Online (Sandbox Code Playgroud)
我想这来自不同的ClassLoaders.但我怎么解决呢?我们如何从外部与OSGi环境相互作用?或者我们可以将它全部放入OSGi容器中?
大家好,我在 karaf 中使用 feature install 时遇到以下错误
org.apache.karaf.features.internal.util.MultiException: Error
at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader.<init>(MavenDownloadManager.java:84)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.MavenDownloadManager.createDownloader(MavenDownloadManager.java:72)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.region.Subsystem.downloadBundles(Subsystem.java:358)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.region.Subsystem.downloadBundles(Subsystem.java:355)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:191)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:263)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1079)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:975)[9:org.apache.karaf.features.core:4.0.3]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_79]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_79]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_79]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_79]
Caused by: java.lang.Exception: Unable to create resource for bundle mvn:org.dt.dummy/Diff-Blueprint/0.0.1-SNAPSHOT
at org.apache.karaf.features.internal.region.Subsystem.createResource(Subsystem.java:567)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.region.Subsystem$1.downloaded(Subsystem.java:376)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader$1.operationComplete(MavenDownloadManager.java:133)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader$1.operationComplete(MavenDownloadManager.java:127)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.DefaultFuture.notifyListener(DefaultFuture.java:344)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.DefaultFuture.notifyListeners(DefaultFuture.java:329)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.DefaultFuture.setValue(DefaultFuture.java:255)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.AbstractDownloadTask.setFile(AbstractDownloadTask.java:61)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.AbstractRetryableDownloadTask.run(AbstractRetryableDownloadTask.java:59)[9:org.apache.karaf.features.core:4.0.3]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_79]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_79]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)[:1.7.0_79]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)[:1.7.0_79]
... 3 more
Caused by: org.osgi.framework.BundleException: Unable to build resource for mvn:org.dt.dummy/Diff-Blueprint/0.0.1-SNAPSHOT: …
Run Code Online (Sandbox Code Playgroud) 我必须为学校创建一个项目.我们想要创建一个监控传感器的系统.由于传感器发展很快,他们有可能在几年内使用其他传感器.要捕获该问题,我们希望创建一个允许用户编写插件来监控传感器的系统.
我正在寻找不同的框架,主要是OSGI.
有人能告诉我Apache Felix和OSGI之间的区别吗?OSGI还活跃吗?
谢谢!
osgi ×5
java ×4
apache-felix ×2
haskell ×2
ajax ×1
apache-karaf ×1
bacnet ×1
c ×1
cabal ×1
concurrency ×1
elm ×1
equinox ×1
javascript ×1
karaf ×1
knopflerfish ×1
modularity ×1
nix ×1
nixos ×1
nixpkgs ×1
pax-exam ×1
polymer ×1
polymer-1.0 ×1