小编Rob*_*ski的帖子

如何替换BndTools默认启动器并更改导出文件结构

我正在使用BndTools(http://bndtools.org/)来开发OSGI应用程序.一切都很好,但我想在导出我的应用程序时想要改变一些东西.

我正在努力实现两件事(我认为它们可能是相关的):

1:用aQute.launcher自定义的BndTools启动器替换默认的BndTools启动器(或者将其.JAR格式化)

如何摆脱或更改默认的BndTools启动器(aQute.launcher)到自定义的启动器?

我在这个主题上唯一能找到的就是:http://goo.gl/jYliih

发射器没有构建成bnd,实际的发射策略是参数化的.启动器通过在其上放置JAR与bnd或bndrun文件相关联-runpath.A .JAR应该有一个Launcher-Plugin标头作为启动器.如果未找到启动器,-runpath则将使用内置启动器biz.aQute.launcher.

原因是我需要我的应用程序接受命令args而不是干扰aQute启动器(就像所有-run args).另一方面,我想摆脱.bat/.sh启动应用程序的批处理方法,并使用单个.jar文件来启动应用程序.

那可能吗?

2:自定义导出的文件结构

默认情况下,BndTools在导出应用程序时会创建此文件结构:

jar/ - >这是OSGI jar包文件夹

aQute/ - >默认的BndTools Launcher(Launcher.class里面)

META-INF/ - >为什么这里有META-INF文件夹?这不是JAR

launcher.properties - >启动器属性

start.sh - >从这个批处理文件中启动Launcher.class.

start.bat /与JAR相比,这有什么好处?

基本上,我想删除aQute,META-INFstart.*文件,并添加一个bin文件夹的二进制文件.

这应该可以用"Ant","Maven"或"Gridle"脚本来实现.但我可以创建一个没有BndTools支持的"BndTools项目"或"Gradle项目".我安装了"BndTools Gradle插件",但我找不到任何有关此主题的有用文档.

希望有人可以帮助我,或者指出我正确的方向.问候.

java osgi bnd bndtools osgi-bundle

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

将 Inno Setup 子组件显示为同级组件,并在复选框中显示检查而不是方形

我正在尝试将一个子组件显示为兄弟组件。我正在为游戏制作一个安装程序,该游戏可以在同一安装文件夹中共存多个版本的游戏。

现在我希望能够安装可选的模组,这些模组需要安装特定版本的游戏(依赖项)。因此,当用户单击某个模组时,就会选择所需的游戏,如果取消选择该游戏,则所有模组都会被取消选择。代码按预期工作并且行为如前所述。有时它会让用户感到有点困惑。例如,如果没有安装 mod,则游戏中会显示一个正方形而不是检查,并且 mod 的层次结构是不必要的。

我想要实现的目标:

  1. 我想必须game_2显示支票而不是方块
  2. 作为game_2\com_mods兄弟姐妹game_2而不是孩子。

据我所知,我想没有简单的方法可以达到这种效果。如果我没有错误地使用该[Code]部分,则可以修改 UI,但我不知道如何强制使用复选框而不是正方形并删除子项的填充。

这是我的示例代码:

[Setup]
AppName=Demo
AppVersion=1.0
DefaultDirName=.

[Components]
Name: "game_1";    Description: "Game v1";  Types: full custom; Flags: checkablealone
Name: "game_2";    Description: "Game v2";  Types: full custom; Flags: checkablealone
Name: "game_2\com_mods";    Description: "Game Community Mods"; Types: full custom;  Flags: dontinheritcheck
Name: "game_2\com_mods\3rdmod1"; Description: "Mod 1"; Flags: exclusive
Name: "game_2\com_mods\3rdmod1"; Description: "Mod 2"; Flags: exclusive
Name: "game_2\com_mods\3rdmod1"; Description: "Mod 3"; Flags: exclusive …
Run Code Online (Sandbox Code Playgroud)

checkbox inno-setup hierarchy pascalscript

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

Flex项目的缩小程度不小于其内容

我有一个我为用户显示的元素列表以及一个Icon和两个按钮.到目前为止这么好,但我希望这个列表可以扩展到移动设备并在必要时缩小.

当列表中的文本太长时,它会阻止页面缩小并强制显示水平滚动条.我想要实现的是长描述文本缩小,最后显示3个点(省略号).

容器元素显示为flex,文本容器具有flex-shrink 1,但它仍然拒绝收缩和溢出.

任何人都可以指导我在这里做错了吗?为什么.mdc-list-item拒绝收缩?有没有什么办法可以在必要时用CSS强制缩小它?

.mdc-list-item {
  flex-shrink: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.mdc-list {
  display: flex;
  flex-direction: column;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/material-components-web@latest/dist/material-components-web.js"></script>
<link href="https://unpkg.com/material-components-web@latest/dist/material-components-web.css" rel="stylesheet" />
<div style="width: 100%; max-width: 800px; margin: 0 auto; display: flex;">
  <ul class="mdc-list mdc-list--two-line mdc-elevation--z1" style="flex: 1;">
    <li class="mdc-list-item" title="Test Item 1 Description" channel-id="1">
      <img class="mdc-list-item__start-detail grey-bg" style="width: 40px; height: 40px;" src="https://material-components-web.appspot.com/images/animal3.svg" alt="Brown Bear">

      <span class="mdc-list-item__text">
        Test Item 1
        <span class="mdc-list-item__text__secondary">Test Item 1 Description</span>
      </span>

      <div class="mdc-list-item__end-detail">
        <i class="mdc-icon-toggle material-icons …
Run Code Online (Sandbox Code Playgroud)

html css ellipsis css3 flexbox

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

BndTools,如何添加非 OSGi JAR?使用普通 JAR 破坏了整个项目。缺少需求接线包

我正在研究这个基于 BndTools 的 OSGi 项目:https : //github.com/Jafre13/ISS-Product

我的项目虽然需要一个基于非 OSGi 的库(aliasi-lingpipe - https://mvnrepository.com/artifact/de.julielab/aliasi-lingpipe/4.1.0)。

这就是问题开始的地方。首先,我尝试直接从 Maven 存储库中添加 JAR,因为 BndTools 据称与 Maven 存储库兼容,但它似乎不适用于“存储库浏览器”。即使将 Maven Central 插件添加到http://bnd.bndtools.org/plugins/maven.html 中所述的 build.bnd 文件,仍然会产生相同的结果。

放弃让 Maven 工作,我尝试以最简洁的方式来做,自己下载 JAR 并将其添加为此处指定的普通 JAR:http : //bndtools.org/faq.html(6 How Can I Depend on a构建时的普通 JAR 文件?)

这次 JAR 得到了识别,我可以开始在代码中使用它。但是一旦你启动了 OSGi 框架,当它试图解析非 OSGi 类路径时,一切都会再次崩溃,导致如下接线错误:

无法解析包:[slf4j.api-1.7.25 org.osgi.framework.BundleException: 无法解析 slf4j.api [6](R 6.0): 缺少需求 [slf4j.api [6](R 6.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j.impl)(version>=1.6.0)) 未解决的需求:[[slf4j.api [6](R 6.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j.impl)(version>=1.6.0))] , dk.sdu.sso.sred-0.0.0.201712041036 org.osgi.framework.BundleException: 无法解析 dk。 sdu.sso.sred [7](R 7.0): …

java osgi bndtools

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

即使使用捕获阶段,OnDrop事件目标也是在儿童身上丢弃的子项

我试图让我的拖放工作在JavaScript中正常工作,而不必显式扫描父元素或其他ID,类循环和其他hacky魔术.

现在,当我拖动元素池中的一个元素并将其拖动到灰色区域时,该元素将被复制到放置区域(到目前为止一切正确).我基本上复制拖动元素的HTML,清除放置区域(目标)并向其添加新元素.

当您在放置区中已经有一些子元素并将其拖到子元素上时,问题就开始了.然后drop事件中的目标是子元素,而不是附加事件的div.这会导致拖动的元素清除并将其自身复制到子项而不是drop容器中.

预期的结果应该是,无论是将它放在子节点上还是直接放在主放置容器上,目标应始终是父节点,因为我正在使用事件捕获模式.

这是我在JS Fiddle中的示例代码.我正在使用带捕获的事件监听器,但它似乎正在进行冒泡阶段而忽略了捕获阶段.为什么?

这样做的正确方法是什么?

function onDrag(ev) {
  var el = ev.target;
  //console.log("Drag: " + ev.target.outerHTML)
  ev.dataTransfer.setData('text/html', ev.target.outerHTML);
}

function onContainerOver(ev) {
  ev.preventDefault();
  ev.dataTransfer.dropEffect = "move"
}

function onContainerDrop(ev) {
  ev.preventDefault();
  //console.log("Drop: " + ev.dataTransfer.getData("text/html"))
  ev.target.innerHTML = ev.dataTransfer.getData("text/html");
}

document.getElementById('target').addEventListener('drop', onContainerDrop, true); // This should not bubble, but it does. Target is always the child first rather than the element where the event listener resides. Why???
Run Code Online (Sandbox Code Playgroud)
#list {}

.el {
  padding: 5px;
  margin: 10px;
  border: solid 1px black; …
Run Code Online (Sandbox Code Playgroud)

html javascript drag-and-drop dom-events event-capturing

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