_zZ白熊Zz_
在程序里面内置了一个gnu协议的jar
调用方法是写出文件然后通过cmd调用
请问这样违反GNU协议么?

耗子
请问你说的是GPL协议吗?
GPL协议的核心在于发布。也就是说,只要你发布了你的软件,你的软件也将被GPL协议所感染。
鄙人对GPL协议的了解不多,相关资料请看这里这里

如果我的答案对你有帮助的话,请给我你最高的评分!

Romcnov
是指GPL协议吗?
如果是:如果是像类库一样调用或者修改了这个jar的源代码,就会被感染,但如果是使用则不会;
如果不是:GNU运动下的协议有很多,请详细描述。
此外不推荐使用通过GPL、AGPL、LGPL发布的软件,它们侵犯了软件二次开发者的权利。

海螺螺
本帖最后由 754503921 于 2018-8-6 17:23 编辑

如果你说的 GNU 协议为 GNU General Public License v3

我不是法律方面的专家,但是我认为不侵犯
GPL使用中,静态链接(比如java中你import了)是肯定不行的,动态链接有争议,具体得看法律如何界定动态链接
但是,动态链接常常是被开源社区认可的,如 bukkit 为 GPLv3 协议,基于 bukkit 的 CraftBukkit 为 LGPL,因为其使用了 patch 来维护,本身没有引用 bukkit
同时,在维基百科上:
迄今为止没有案例表明有人以动态链接的方式来绕过GPL的条款或者并被起诉

另,维基百科上关于两个程序的相关说明,你的情况满足「管道。命令行参数」的情况
我们认为适当的标准取决于通信机制(exec,pipes,rpc,共享地址空间中的函数调用等)和通信的语义(哪些信息被互换)。如果模块包含在相同的可执行文件中,则它们在一个程序中被明确地组合。如果模块设计为在共享地址空间中连接在一起运行,那么几乎肯定意味着将它们组合成一个程序。相比之下,管道(pipe),接口(socket)和命令行参数是通常在两个独立程序之间使用的通讯机制。所以当它们用于通信时,模块通常是单独的程序。但是,如果通信的语义足够亲密,交换复杂的内部数据结构,那么也可以将这两个部分合并成一个更大的程序。

即,如果你不想让其被界定为一个库而是单独的调用其他程序,减少耦合
如果你指的 GNU 协议为 AGPL,别想了,肯定不行
如果你指的 GNU 协议为 LGPL,可以
如果 GNU 系还有别的,不知道,自己读一遍

最后,你可以以 GPL 开源,这样啥事儿都没有 :(

_zZ白熊Zz_
本帖最后由 Cat1024 于 2018-8-9 12:45 编辑

谢谢楼上的...
某人已经帮我解答了,在程序里包含GPL协议开源的任何二进制文件/源码都会被传染
(好恶心orz...