社区
Web 开发
帖子详情
请问在eclipse里面怎样单独编译一个java文件,或者一个包?难道非要整个project一起编译?
richwxj
2006-02-26 05:00:07
问题如上,我觉得这就是它比jb差的地方。
请大家告诉我一个解决办法
...全文
415
3
打赏
收藏
请问在eclipse里面怎样单独编译一个java文件,或者一个包?难道非要整个project一起编译?
问题如上,我觉得这就是它比jb差的地方。 请大家告诉我一个解决办法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lydvqq
2006-02-27
打赏
举报
回复
"保存就自动编译了啊
要不就ctrl+b"
最好是把"项目"->"自动构建" 选 上
sayifa
2006-02-27
打赏
举报
回复
保存就自动编译了啊
要不就ctrl+b
doway
2006-02-26
打赏
举报
回复
或许,但可以用 ANT。
java
混淆工具,不可逆 jocky 也许是最好的了
一、前言 其他资源: web报表工具 http://download.csdn.net/source/2881508 1.1 什么是Jocky? 我们知道,
Java
是一种跨平台的编程语言,其源码(.
java
文件
)被
编译
成与平台无关的字节码(.class
文件
),然后在运行期动态链接。这样,
编译
后的类
文件
中将包含有符号表,从而使得
Java
程序很容易被反
编译
。相信每
一个
Java
开发人员,都曾经用过诸如Jad之类的反
编译
器,对
Java
的class
文件
进行反
编译
,从而观察程序的结构与实现细节。如此一来,对于那些需要严格进行知识产权保护的
Java
应用,如何有效的保护客户的商业投资,是开发人员经常需要面对的问题。 于是就出现了
Java
混淆
编译
器,它的作用是打乱class
文件
中的符号信息,从而使反向工程变得非常困难。 Jocky就是这样一款优秀的
Java
混淆
编译
器。 1.2 为什么需要Jocky? 目前业界有不少商业的甚或是开源的混淆
编译
器,但它们普遍存在一些这样或者那样的问题。一般而言,现有的混淆器都是对
编译
好的 class
文件
进行混淆,这样就需要
编译
和混淆两个步骤。而事实上,并不是所有的符号都需要混淆。如果你开发的是
一个
类库,或者某些类需要动态装载,那些公共API(或者说:那些被publish出来的API)就必须保留符号不变,只有这样,别人才能使用你的类库。现有的混淆器提供了GUI或脚本的方式来对那些需要保留的符号名称进行配置,但如果程序较大时,配置工作将变得很复杂,而程序一旦修改,配置工作又要重新进行。某些混淆器能够调整字节码的顺序,使反
编译
更加困难,但笔者经历过混淆之后的程序运行出错的情况。 而Jocky与其它混淆
编译
器最大的不同之处在于:它是直接从源码上做文章,也就是说
编译
过程本身就是
一个
混淆过程。 1.3 Jocky是如何工作的? Jocky混淆
编译
器是在Sun JDK中提供的
Java
编译
器(
java
c)的基础上完成的,修改了其中的代码生成过程,对
编译
器生成的中间代码进行混淆,最后再生成class
文件
,这样
编译
和混淆只需要
一个
步骤就可以完成。另外可以在源程序中插入 符号保留指令 来控制哪些符号需要保留,将混淆过程与开发过程融合在
一起
,不需要
单独
的配置。 1.4 Jocky的作用 1.4.1代码混淆 如前文所述,混淆
编译
是Jocky的首要用途。我们举
一个
最简单的例子,下面的SimpleBean是未经混淆的class
文件
通过Jad反
编译
以后获得的源
文件
: public class SimpleBean implements Serializable { private String name = "myname"; private List myList = null; public void SimpleBean() { myList = new ArrayList(10); } public void foo1() { myList.add("name"); } private void foo2() { } private void writeObject(
java
.io.ObjectOutputStream out) throws IOException { } } 下面是经Jocky混淆过的类
文件
,通过Jad反
编译
后产生的源
文件
: public class SimpleBean implements Serializable { private String _$2; private List _$1; public SimpleBean() { _$2 = "myname"; this; JVM INSTR new #4 ; JVM INSTR dup ; JVM INSTR swap ; 10; ArrayList(); _$1; } public void foo1() { _$1.add("name"); } private void _$1() { } private void writeObject(ObjectOutputStream objectoutputstream){ throws IOException { } }
joc
eclipse
plugin
Jocky
Java
Obfuscate Compiler Kit for You 一、前言 1.1 什么是Jocky? 我们知道,
Java
是一种跨平台的编程语言,其源码(.
java
文件
)被
编译
成与平台无关的字节码(.class
文件
),然后在运行期动态链接。这样,
编译
后的类
文件
中将包含有符号表,从而使得
Java
程序很容易被反
编译
。相信每
一个
Java
开发人员,都曾经用过诸如Jad之类的反
编译
器,对
Java
的class
文件
进行反
编译
,从而观察程序的结构与实现细节。如此一来,对于那些需要严格进行知识产权保护的
Java
应用,如何有效的保护客户的商业投资,是开发人员经常需要面对的问题。 于是就出现了
Java
混淆
编译
器,它的作用是打乱class
文件
中的符号信息,从而使反向工程变得非常困难。 Jocky就是这样一款优秀的
Java
混淆
编译
器。 1.2 为什么需要Jocky? 目前业界有不少商业的甚或是开源的混淆
编译
器,但它们普遍存在一些这样或者那样的问题。一般而言,现有的混淆器都是对
编译
好的 class
文件
进行混淆,这样就需要
编译
和混淆两个步骤。而事实上,并不是所有的符号都需要混淆。如果你开发的是
一个
类库,或者某些类需要动态装载,那些公共API(或者说:那些被publish出来的API)就必须保留符号不变,只有这样,别人才能使用你的类库。现有的混淆器提供了GUI或脚本的方式来对那些需要保留的符号名称进行配置,但如果程序较大时,配置工作将变得很复杂,而程序一旦修改,配置工作又要重新进行。某些混淆器能够调整字节码的顺序,使反
编译
更加困难,但笔者经历过混淆之后的程序运行出错的情况。 而Jocky与其它混淆
编译
器最大的不同之处在于:它是直接从源码上做文章,也就是说
编译
过程本身就是
一个
混淆过程。 1.3 Jocky是如何工作的? Jocky混淆
编译
器是在Sun JDK中提供的
Java
编译
器(
java
c)的基础上完成的,修改了其中的代码生成过程,对
编译
器生成的中间代码进行混淆,最后再生成class
文件
,这样
编译
和混淆只需要
一个
步骤就可以完成。另外可以在源程序中插入 符号保留指令 来控制哪些符号需要保留,将混淆过程与开发过程融合在
一起
,不需要
单独
的配置。 1.4 Jocky的作用 1.4.1代码混淆 如前文所述,混淆
编译
是Jocky的首要用途。我们举
一个
最简单的例子,下面的SimpleBean是未经混淆的class
文件
通过Jad反
编译
以后获得的源
文件
: public class SimpleBean implements Serializable { private String name = \"myname\"; private List myList = null; public void SimpleBean() { myList = new ArrayList(10); } public void foo1() { myList.add(\"name\"); } private void foo2() { } private void writeObject(
java
.io.ObjectOutputStream out) throws IOException { } } <未混淆的类
文件
反
编译
后的效果> 下面是经Jocky混淆过的类
文件
,通过Jad反
编译
后产生的源
文件
: public class SimpleBean implements Serializable { private String _$2; private List _$1; public SimpleBean() { _$2 = \"myname\"; this; JVM INSTR new #4
; JVM INSTR dup ; JVM INSTR swap ; 10; ArrayList(); _$1; } public void foo1() { _$1.add(\"name\"); } private void _$1() { } private void writeObject(ObjectOutputStream objectoutputstream){ throws IOException { } }
文件反
编译
的效果> 1.4.2 支持将JDK 5.0的语法
编译
成能够在JDK 1.4上运行的类
文件
JDK 5.0在语法层面上有许多新增特色,能够为简化应用的开发带来一些便利。譬如Generics、Enhanced for Loop以及 Autoboxing/Unboxing等。但另人遗憾的是,倘若利用这些新的语法开发应用,就意味着不能够在JDK 1.4上运行,而JDK 1.4毕竟是目前最为普及的VM版本。幸运是,Jocky的另
一个
特色就是:通过参数配置,能够把用JDK 5.0语法编写的应用
编译
成JDK 1.4上的类
文件
版本。我们可以把经过 Jocky
编译
的类
文件
以UltraEdit打开,可以发现在第8个字节上(类
文件
的major version)的数值是0x30,即十进制的48,这是JDK 1.4所能够理解的类
文件
版本(JDK 5.0默认
编译
的类
文件
版本是49)。前提是:应用中不能够使用JDK 1.4中所没有的一些API。 二、Jocky的用法 2.1 常规用法 使用Jocky非常简单,获得jocky.jar以后,只需要运行
java
-jar jocky.jar就可以启动Jocky混淆
编译
器,jocky的命令行参数和
java
c完全相同,但增加了
一个
新的参数-scramble,它的用法如下: -scramble 混淆所有package private或private符号 -scrambleall 混淆所有符号 -scramble:
混淆相应级别的符号 其中
指定混淆级别,可以是以下几种级别: -scramble:none 不进行混淆 -scramble:private 对所有private访问级别的元素进行混淆 -scramble:package 对所有private或package private元素进行混淆 -scramble:protected 对所有private, package private, protected元素进行混淆 -scramble:public 对所有的元素都进行混淆 -scramble:all 相当于-scramble:public 如果使用-scramble不带级别参数,则相当于-scramble:package 2.2 Jocky for Ant 近年来,Ant已经成为
Java
应用开发中打包工具的事实上的标准。在应用的开发过程中,我们往往都会有
一个
Ant脚本,通过该脚本,能够对应用进行
编译
、打包、发布等一系列过程。因此,Jocky的最佳切入点便是对Ant的支持。 在Ant中使用Jocky非常简单: 1. 将lib\\jocky-ant.jar copy至ANT_HOME\\lib目录下。 2. 在ant脚本中加入这样一行代码,以引入Jocky Task
3. 设置Jocky的一些基本属性,包括: jocky.jar包的位置,以及混淆级别,如下所示:
4. 当设置jocky的enable属性为true时,此时,Ant脚本中的
java
c
编译
命令,便会被自动替换成Jocky
编译
器;当设置enable属性为false时,
java
c
编译
命令将恢复成正常设置,示例脚本如下: <
project
name=\"jocky\" default=\"build\">
<
java
c destdir=\"bin2\" debug=\"on\" source=\"1.5\" target=\"1.4\">
java
c>
<
java
c destdir=\"bin3\" debug=\"on\" target=\"1.4\">
java
c>
project
>
注意: Jocky for Ant在Ant 1.6.5上开发,推荐使用该版本。 2.3 Jocky for
Eclipse
Jocky提供了
Eclipse
的插件,从而能够直接在
Eclipse
中使用Jocky。 1. Jocky插件的安装: 将Jocky插件安装至
Eclipse
中非常简单,只需要将
eclipse
/plugins/org.apusic.jocky_1.0.0目录 copy 至
Eclipse
的 plugins目录即可。或者在
Eclipse
/links
文件
夹中,通过link方式指定Jocky的插件目录。 2. 在
Eclipse
中使用Jocky: 在
Eclipse
中使用Jocky也非常简单,任何
一个
Java
工程,选中工程通过右键菜单,都可以出现Jocky的快捷菜单:
Eclipse中的右键菜单>
Eclipse中的属性设置> 事实上,在
Eclipse
中使用Jocky时,Jocky也是首先针对所选工程生成Ant的Build
文件
(默认名称jocky_build.xml),然后再通过Ant完成混淆
编译
。 以下是Jocky在
Eclipse
中自动生成的Ant Build
文件
示例: <
project
basedir=\".\" default=\"build\" name=\"jocky.example.jocky\">
EclipseWTP1.0.8\\workspace_jdk5_apusicstudio\\org.apusic.jocky\\jocky.jar\">
project.classpath\">
project.name}: ${ant.file}\">
<
java
c destdir=\"${jocky.output.dir}/bin\" target=\"${target}\">
project.classpath\">
java
c>
project
>
Eclipse中自动生成的Ant脚本示例> 注1:只支持
Eclipse
3.1.1及以上版本。 注2:如果在
Eclipse
中找不到Jocky插件,请删除
Eclipse
安装目录/configuration/org.
eclipse
.update
文件
夹 (Maybe an
eclipse
bug?)。 2.4 如何使用符号保留指令 除了在命令行用 -scramble 参数控制符号混淆级别外,还可以在源代码中使用符号保留指令来控制那些符号需要保留。符号保留指令是
一个
Java
文档注释指令,可以插入在类和类成员的文档注释中,例如: /** * This class should preserve. * @preserve */ public class Foo { /** * You can specify which field should be preserved. * @preserve */ private int x; /** * This field is not preserved. */ private int y; /** * You can also preserve methods. * @preserve */ public void hello() {} /** * This method is not preserved. */ private void collect() {} } <使用preserved指令的示例> 如果没有@preserve指令,则根据混淆级别及成员的访问级别来确定符号是否保留。 对于类的符号保留指令可以附带
一个
保留级别参数,来控制类成员的符号保留,包括: @preserve 仅对类名进行保留,类成员的保留根据-scramble命令行参数决定 @preserve public 保留所有public成员 @preserve protected 保留所有public和protected成员 @preserve package 保留所有public, protected, package private成员 @preserve private 保留所有成员 @preserve all 相当于@preserve private 事实上,即便不加@preserve指令,Jocky对
Java
语言特有的一些private级别的方法不进行混淆,譬如,在序列化时有特殊作用的writeObject及readObject方法等。但笔者强烈建议: 针对这些有特殊含义不能够被混淆的 private级别的方法或者字段,请以@preserve指令予以保护。 注1:建议通过IDE的
Java
Doc设置,来辅助@preserve指令的书写。 三、Jocky的限制 正如前文所说,Jocky是基于源代码的混淆
编译
器,因此,Jocky不支持分别
编译
,必须对所有的源
文件
同时进行混淆
编译
。但事实上,倘若混淆级别控制在private级别上,该限制便不复存在。
eclipse
中
编译
java
_
eclipse
编译
java
文件
本文收集整理关于
eclipse
编译
java
文件
的相关议题,使用内容导航快速到达。内容导航:Q1:
eclipse
编译
java
文件
new
一个
project
,选择
java
project
随便起个名字,完成,在
project
中右键新建
一个
package,起个名字,再new
一个
class,起个名字,完成。在这个class
里面
写代码。右键run as---->第
一个
选项(类中必须有
一个
main方法才能执...
Eclipse
中
java
文件
生成jar
文件
的方法
在
eclipse
中将编写的
java
文件
生成jar
文件
,这样可以给别人或者在其他的地方都可以引用
java
文件
中的函数,比较方便,本篇博文讲的就是在
Eclipse
中如何将
java
文件
生成jar
文件
。一、首先要有
java
文件
,这里是
一个
比较简单的例子,功能就是求n的平方值,输入
一个
字符串,将字符串转化为double型的数字,求出平方值,并以字符串的格式输出。SqrtCalc.
java
文件
的代码如下:pac
eclipse
运行
单独
的
java
文件
请注意,
单独
的
java
文件
没有项目,也没有目录,有且仅有Hello.
java
文件
,
文件
内容为: public class Hello { public static void main(String[] args) { System.out.print("hello world"); } }估计是我的技术太菜了,这个
单独
的
java
文件
没法通过在eclips
Web 开发
81,116
社区成员
341,729
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章