我在手机的原生浏览器上测试时使用git同步到phonegap.因此我有以下几行:
var isPhoneGap = false;
Run Code Online (Sandbox Code Playgroud)
显然我在构建时更改了这个,但是有什么方法可以设置git来忽略这一行,或者我必须把它放在自己的文件中并忽略它吗?
我在OSX 10.6上使用Gitx和终端.
我有一些使用包前缀的java源文件(它们模拟一些JDK类).我使用带有前缀的这些文件来对抗某些单元测试.如果测试通过,我想生成一个包含源文件但从所有java文件中删除包前缀的jar.
我正在使用maven进行构建.有没有人知道这样做的方法?基本上我想要的是像资源插件过滤功能,但它正确搜索和替换(如:s/my.package.prefix .// g),而不是过滤$ {vars}.
在Java中是否可以做一些#ifdef的事情,就像在C/C++中一样?
例:
class Test
{
public static final boolean ANDROID = false;
public Test()
{
if (ANDROID)
{
// do stuff that won't compile if not on android
}
else
{
// do stuff that should be only done on desktop
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,即使ANDROID是false,如在示例中,它仍将尝试编译内部的代码if,即使它不会(也不应该)编译.
我正在寻找一个方式做条件编译-编译器甚至不应该看的if,如果ANDROID是false.
我的问题的背景是我在Eclipse中有一个Processing应用程序.我在两个单独的项目中使用Android的正常处理和处理,但我希望能够在没有编译器错误的情况下将项目的源代码移动到彼此之间.例如,我希望能够拥有可以从Android项目移动到桌面项目的源代码文件,只需更改一些内容 - 例如,更改ANDROID = true为ANDROID = false.
我真的需要它是条件编译,因为当我将源代码从Android项目复制到桌面项目时,桌面库显然不会包含Android库,然后源代码甚至不会编译.
编辑:所以现在我知道Java中没有预处理器,我的问题是:是否有任何其他方法可以在我的项目中使用此功能(能够将源代码从一个复制到另一个而只需进行非常小的更改)必须手动[取消]注释特定的代码片段并记住它们的位置?
编辑2:这不是另一个问题的重复,因为我的问题包括可能在其中存在编译器错误的代码,而这个作为副本关闭的问题则没有.(另一个问题只涉及即使没有#ifdefs 也可以正常编译的代码.)为了解释,对于另一个问题,最高评价(和接受)的答案是关于编译的代码,但是根本不在字节码中发出 …
可能重复:
如何标记java代码,使其不被编译
在c中,我们可以阻止编译块代码,如下所示:
#if 0
//code here
#endif
Run Code Online (Sandbox Code Playgroud)
因此,即使代码块容易出错代码编译,我想在Java中使用相同的东西,这样我就可以跳过那些因为某些库缺失而无法编译的代码.
谁能帮我 ?
我有一个项目,其中有许多代码仅在确定的版本中可用,当我修复错误时,我必须在所有副本中修复它们.这很不方便.
是否有任何#IF与#CONST在Java中,如果#IF条款是假的,代码不会被编译?
我想根据一些营销要求对我的代码进行一些更改.我认为最好的解决方案是使用预处理,就像在J2ME中一样.我该怎么做?这个任务有什么工具吗?谢谢,Eyal.
我们知道,有很多java反编译工具可以将.class转换为.java文件.
因此,我们需要保护我们的.java文件免受反编译.我知道这是一个很大的话题,也许没有结局.
通常,有两种方式:混淆器和自定义类加载器.
是否有任何成熟的解决方案或开源框架,这两种方式相结合?
另一个方面与exe4j有关,它将jar包装到exe文件中,看起来它可以保护java代码,因为我们可以看到的是exe文件而不是jar文件或类文件.但实际上,当它运行时,它会将所有jar文件分解为临时目录,这意味着很容易获得反编译器的类文件.那么从exe4j方面保护java代码的任何考虑因素呢?
感谢您的意见和建议.
更新
感谢大家的建议或经验分享.这对我很有帮助.为了得出结论,我将放弃任何具有加密功能的混淆器或自定义类加载器.因为最终Java代码可以在聪明的黑客之前公开.
我将在编译时使用C语言中的"#ifdef"等技巧删除一些核心代码.在Java中,static和final布尔类变量可用于执行相同的工作.然后,compilered类文件将不包含受需要保护的java代码.
可能重复:
Java中的#ifdef #ifndef
我试图通过使用类似这样的东西在我的Android代码中实现一些调试消息:
private static final boolean DEBUG = false;
if (DEBUG) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
但是,在编译时我不断收到"非法表达式启动"错误.final boolean有效,但既不是静态也不是私有.
我在方法中声明了DEBUG变量.如果有一种方法可以使这个全局化,以便同一个Java文件中的所有内容都能看到它而不是我必须在每个需要它的方法中声明它,那么也会感激不尽.
谢谢!
我们在java中替换了这些语句吗?
#ifdef MacOSX
#import <Cocoa/Cocoa.h>
#else
#import <Foundation/Foundation.h>
#endif
Run Code Online (Sandbox Code Playgroud)
我想根据条件编译我的java类?
java ×6
android ×5
eclipse ×2
.net ×1
c ×1
c++ ×1
compilation ×1
const ×1
decompiling ×1
equivalent ×1
git ×1
gitx ×1
maven ×1
obfuscation ×1
preprocessor ×1
processing ×1