我正在使用BndTools(http://bndtools.org/)来开发OSGI应用程序.一切都很好,但我想在导出我的应用程序时想要改变一些东西.
我正在努力实现两件事(我认为它们可能是相关的):
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文件来启动应用程序.
那可能吗?
默认情况下,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-INF和start.*文件,并添加一个bin文件夹的二进制文件.
这应该可以用"Ant","Maven"或"Gridle"脚本来实现.但我可以创建一个没有BndTools支持的"BndTools项目"或"Gradle项目".我安装了"BndTools Gradle插件",但我找不到任何有关此主题的有用文档.
希望有人可以帮助我,或者指出我正确的方向.问候.
我正在尝试将一个子组件显示为兄弟组件。我正在为游戏制作一个安装程序,该游戏可以在同一安装文件夹中共存多个版本的游戏。
现在我希望能够安装可选的模组,这些模组需要安装特定版本的游戏(依赖项)。因此,当用户单击某个模组时,就会选择所需的游戏,如果取消选择该游戏,则所有模组都会被取消选择。代码按预期工作并且行为如前所述。有时它会让用户感到有点困惑。例如,如果没有安装 mod,则游戏中会显示一个正方形而不是检查,并且 mod 的层次结构是不必要的。
我想要实现的目标:
game_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) 我有一个我为用户显示的元素列表以及一个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)我正在研究这个基于 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): …
我试图让我的拖放工作在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)bndtools ×2
html ×2
java ×2
osgi ×2
bnd ×1
checkbox ×1
css ×1
css3 ×1
dom-events ×1
ellipsis ×1
flexbox ×1
hierarchy ×1
inno-setup ×1
javascript ×1
osgi-bundle ×1
pascalscript ×1