问题标签 [gcj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java5 中的扫描程序类抛出 java.lang.NullPointerException
我在java5中使用scanner类,下面的代码会抛出异常:
堆栈跟踪是:
有谁知道是什么导致了这个异常?
java - 使用一个简单的命令从命令行从一堆 .Java 文件到 .Jar 文件
我四处搜索,找不到一个简单的命令行工具,它可以在一个目录中获取一堆 .java 文件并编译为 .class 文件,然后自动将它们全部粘贴到 .jar 中。我可能自己编写一个脚本,但这是我对重新发明轮子不感兴趣的一个领域(我将编写 Djikstra 的算法一百万次,但我真的不想在这样的事情上浪费时间)。
是否有一个类似于 gcc 或 ghc 的简单工具,您可以导航到一个目录并调用其中的文件以生成可执行的 jar 文件?我对 gcj 抱有希望,但显然编译为 0 和 1。很棒,但不是我想要的。
请不要推荐 IDE。我不想处理 netbeans、eclipse、bluej 等。它们是很棒的软件,但我不是在编写企业代码,而是宁愿在一个简单的文本编辑器中把它搞砸。
干杯!
android - gcj 编译到 arm
我正在尝试为 android ndk 构建 micro libgcj。我可以构建查找,但是当我尝试链接 libulibgcj.a 时出现格式无效错误。我认为这是因为 gcj 没有编译到 arm。构建了两个静态库 libgc.a 和 libulibgcj.a。我能够链接所有 c 代码的 libgc.a。Libulibgcj.a 是 c++ 和 java 的组合。那么无论如何编译java代码到arm,因为我注意到android ndk bin文件夹中没有armeabi-gcj?
java - 如何使用 GCJ 编译 Java Servlet 和许多其他类?
目前,我有一个用 Java 编写的后端系统,用于处理、按摩并将数据转发到外部 HSM 模块进行加密。当时认为它足够安全。但是,最近的审计结果要求所有后端 Java 类也必须受到保护。
我已经阅读了 GCJ,它将 Java 字节代码编译为本机代码。这肯定会使逆向工程变得更加困难。
经过 30 多个小时的谷歌搜索和尝试,我什至无法进行编译。我未能在我的 5 个 servlet 和数百个其他 java 类上使用 GCJ 进行编译。这也意味着,我还没有用 tomcat 测试它,我不知道这是怎么回事。
所以这里是我想知道的问题:
1) 有没有人成功用 GCJ 编译 java sevlet 并在 Tomcat 下运行它?如果是,是否有任何与编译 java servlet 直接相关的指南或示例?
2) 我在保护 java 类方面是否走在正确的道路上?如果不是,那么更好的方法是什么?
java - 控制台输入在不应该等待时等待
我刚刚开始使用 Java,并且一直在尝试让控制台输入正常工作。这是代码:
这应该只接受一次输入并打印输入,如下所示:
但这就是发生的事情:
所以,在我看来,它以某种方式接受了Scanner keyboard = new Scanner(System.in);行的输入。然后把它放在我的变量str中。我使用gcj进行编译,使用以下命令编译运行:
编辑:我现在尝试在另一台计算机上运行该程序,使用 Ubuntu 10.04 64 位,而不是以前的 Ubuntu 10.04 32 位。我以同样的方式运行它并且没有重新编译,并且程序运行良好。
任何想法为什么它会这样?
gcc - 从 mingw / gcj 可执行文件加载属性文件时出现异常
我已经构建了一个在 Linux 上运行并生成 Windows 可执行文件的 gcj 交叉编译器,使用 binutils-2.22 和 gcc-4.6.3,并且主要遵循此处的注释:http ://rmathew.com/articles/gcj/bldgcj.html . 这一切都很顺利,直到我尝试使用 java.util.Calendar,当一切都崩溃了。
测试程序:
编译:
例外:
查看源代码,我看到 java.util.Calendar 类包含以下静态初始化程序:
所以在这一点上,我猜问题是其中之一:
- week.properties 文件从未内置到我的 libgcj 中。
- 它在 libgcj 中,但不在我的可执行文件中。
- 它在可执行文件中,但类加载器找不到它。
有谁知道这里到底发生了什么,以及如何解决它?
如果有帮助,为了构建 gcj,我使用了以下配置选项(来自 Ranjit 的站点)
谢谢,
巴尼
java - 将 Java 编译为本机代码会保护源代码吗?
现在,我知道...
只要有足够的时间和资源,任何事情都可以进行逆向工程。
但是,使用GCJ之类的工具将 Java 代码编译为本机代码会使反编译变得更加困难吗?我的意思是,只要几分钟,我就可以使用JD-GUI反编译一个 .jar ,而且相对准确。大多数“Java 到 EXE”转换器只是 JVM 的 .exe 启动器,虽然 JVM 有很多好处,但我一直认为源代码的安全性不是其中之一。
底线:您可以使用 GCJ 之类的东西将您的 Java 源(或 .class)文件编译为本机机器代码吗?如果可以,是否可以防止它被反编译?
编辑:理想情况下,这不仅仅是混淆。具体项目是一个商业游戏,所以我们正在寻找一种方法,使从源代码开始变得更加困难,而不仅仅是理解它。另外,我不确定 Steam 是否接受 .jar,我们正计划将其提交给新的Green Light项目。
java - 用 gcj 编译 java & XStream。(例外:无法创建 XmlPullParser)
我正在增强一个客户,这是一个更大项目的一部分。由于缺乏速度,我被迫切换到 CNI,因此我不得不使用 GNU-gcj 编译器(gnu 4.6.3)生成本机代码。
编译和链接工作正常(感谢 -findirect-dispatch 标志),我在执行输出时没有任何问题。但是当涉及到客户端和服务器之间的通信时,客户端立即断开连接。原因:
[XStreamClient Reader] WARN - 客户端断开连接(异常:com.thoughtworks.xstream.io.StreamException:无法创建 XmlPullParser)
(这个 Exeption 只出现在客户端的 gcj 编译版本中。当我使用 java 解释器运行代码时 - 一切正常(但太慢了^^)) --> 具有挑战性的部分是我无法检索源代码发生此异常的代码,因为它位于客户端使用的预编译(Java 类文件)库中。(而且我无法联系该图书馆的作者)
我猜这个库会调用XppReader,然后它会尝试创建一个 XmlPullParser 类并失败。
我通过解包并编译创建的 *.class 文件然后链接目标文件来绑定 XStream(版本 1.4.3)库(和其他必需的 *.jar)。这似乎也适用于所有其他图书馆。(我的操作系统=Ubuntu)
我已经做了什么来克服这个问题:我用谷歌搜索了 XStream/XmlPullParser 和 gcj,并用不同的版本替换了“xmlpull”和“kxml2”文件。但没有任何效果。你们中有人知道可能是什么解决方案吗?
编辑:
我发现 XmlPullParser 创建失败的原因是 XmlPullParserFactory.newInstance 函数找不到 /services/org.xmlpull.v1.XmlPullParserFactory 文件的 META-INF 目录。这是因为我只编译和链接了 *.jar 的 *.class 文件。因此,一旦我找到将 META-INF 目录链接到可执行文件的方法,该函数可以找到并访问它,问题就应该得到解决。你们中有人已经知道这样做的方法吗?
java - 您如何将正确的 ABI 版本与 GCJ 链接到 Foregin jar?
我决定尝试将 minecraft 编译成原生二进制文件。
为此,我使用了以下内容(大约,优化可能有所不同):
然后我尝试链接:
但是如果我运行二进制文件,我会得到:
现在,我改用:
我得到:
有人建议如何解决这个问题?
java - 如何使用 gcj 单独编译文件?
我使用 gcj(Cygwin 版本)编译 2 个 java 文件
$ gcj --version gcj (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) 版权所有 (C) 2004 Free Software Foundation, Inc. 这是免费软件;查看复制条件的来源。没有保修;甚至不考虑适销性或特定用途的适用性。
这是我的 2 个 java 文件:
$ cat MyClass.java
$猫HelloWorld.java
我可以在 HelloWorld 中执行代码
我想单独编译它们
然后
问题是我得到