我有一个带有单个源文件的项目,在此完整列出:
package com.acme.el;
public class ExpressionUtils {
public static Object evaluate() {
new org.apache.commons.el.ExpressionEvaluatorImpl();
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
功能与问题无关.当我使用Gradle将项目构建为OSGi包时,清单包含以下指令:
Export-Package: com.acme.el;uses:="org.apache.commons.el";version="1.0"
Run Code Online (Sandbox Code Playgroud)
令我感到困惑的是该uses指令.正如我已经理解了该指令,它意味着定义其他包的依赖关系,这些包需要传播到导入这个导出包的其他包 - 例如,如果我的类定义或方法签名引用org.apache.commons.el包中的类.但是在这个类中,依赖性org.apache.commons.el完全包含在方法体内.它没有在API中公开,也没有其他的bundle导入com.acme.el可以获得ExpressionEvaluatorImpl在方法中创建的实例的保留.所以依赖不应该传播,对吧?
我是否误解了该uses指令的含义,还是在这里使用它是不必要的?
我做了一个最小的例子GitHub repo for reproduction,你可以在Eclipse中克隆和导入Gradle项目.
我想保持Java列表中项目的索引是固定的.
示例代码:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Double> a = new ArrayList<Double>();
a.add(12.3);
a.add(15.3);
a.add(17.3);
a.remove(1);
System.out.println(a.get(1));
}
}
Run Code Online (Sandbox Code Playgroud)
这将输出17.3.问题是17.3在索引2上,现在它在索引1上!
有没有办法在删除元素时保留其他元素的索引?或者是否有另一类更适合此目的?
注意:我不想要固定大小的Collection.
我有一个应用程序,我必须使用Spring根据OSGi包中的一些业务条件加载bean.这个bean不用于导出,用于计算inisde我的包.基本上我有一个实际的服务组件,它被导出,并且它必须在内部使用这个Spring bean.但...
有没有办法做到这一点?
在JavaScript函数中,arguments是一个类似于数组的对象,包含函数的所有参数,无论它们是否被命名:
function f(foo, bar) {
console.log(arguments);
}
f(1, '2', 'foo'); // [1, "2", "foo"]
Run Code Online (Sandbox Code Playgroud)
有没有办法只获取未命名的参数,所以你可以做这样的事情?
function f(foo, bar) {
console.log('foo:', foo, 'bar:', bar, 'the rest:', unnamedArguments);
}
f(1, '2', 'foo'); // foo: 1 bar: "2" the rest: ["foo"]
Run Code Online (Sandbox Code Playgroud)
一个真实的用例是将Angular模块作为参数注入RequireJS模块:
define([
'angular',
'myLibModule', // Exports an Angular module object
'myOtherLibModule', // Exports an Angular module object
], function(angular, myLibModule, myOtherLibModule) {
angular.module('MyApp', [myLibModule.name, myOtherLibModule.name]);
});
Run Code Online (Sandbox Code Playgroud)
由于模块依赖关系列表可能会非常大,因此很快变得非常麻烦.虽然我可以解决它
define([
'angular',
'underscore',
'myLibModule', // Exports an Angular module object …Run Code Online (Sandbox Code Playgroud) 是否可以在不调用其激活器的情况下从另一个包中导入包?此包不是任何包初始化所必需的.我知道这是糟糕的设计,但我不能改变它.
例外:
org.osgi.framework.BundleException: The activator my-package.Activator for bundle my-bundle is invalid
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:157)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:750)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:370)
at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1068)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:557)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:464)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:248)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:445)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:220)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:330)
Run Code Online (Sandbox Code Playgroud) 我有一个干净的Symfony 2.7.3安装(现在更新到2.7.4).在该app/cache/文件夹中,写入了prod和dev的普通缓存文件,但是在该/web/文件夹中有一个文件夹,1其中包含多个文件(web/1/3/7/37f3b66c84cbaf22abc4c5939452d2181eff0b0ec427c68c5499e3743849be17.php例如).
它们是缓存的Twig模板,但为什么它们存储在那里?如何让他们进入公共缓存文件夹?
我使用Windows与Xampp 1.8.2,但在几个Linux服务器上它是相同的,所以它不应该是服务器或PHP问题.希望有人能告诉我什么是错的.
java ×3
osgi ×3
bnd ×1
caching ×1
collections ×1
ecmascript-5 ×1
fixed ×1
gradle ×1
indexing ×1
javascript ×1
list ×1
spring ×1
spring-dm ×1
symfony ×1
twig ×1