各位大侠帮我看下这两个问题,万分感谢了!

xunis 2012-08-16 06:13:24
JAVA的项目,程序运行过程中会产生一个共享文件
	   
public int CreateShareFile(String name ,int size) throws Exception{
private MappedByteBuffer m_mbb = null;
private RandomAccessFile m_raf = null;
private FileChannel m_fc = null;
private int m_isze = 0 ;
if( name == null || size > 100*1024*1024 )
return 0;
m_isze = size;
m_raf = new RandomAccessFile(name, "rw");//读写权限的
m_fc = m_raf.getChannel();
m_mbb = m_fc.map(MapMode.READ_WRITE, 0, size);
return 1;
}

我将该java包放到linux上(redhat 64)执行,改程序创建的这个文件的权限是user rw-rw-r--

我现在将该jar包用wrapper封装成service(方法是网上抄的),将一个shell文件软链接到/etc/init.d/jarfile 该软链接的权限是 root rwxrwxrw-

1.
我现在用user用户执行init.d下的jarfile,service jarfile start ,创建的该文件的权限是user rw-r--r--,
该用户组是有可写权限,但是该用户是没有可写权限了,导致程序卡到这里不能正确执行到下一步了(该文件写入东西后程序才能进入下一步),请问高手们,
为什么后者创建的文件用户没有可写权限了?
2.
我现在用root权限执行init.d下的jarfile,service jarfile start ,创建的该文件的权限是root rw-r--r--,
该文件的权限依旧。
奇怪的是,不管用哪个用户登录执行,程序产生的log文件的权限也是user/root rw-r--r--,但是log却可以写进去(log4j写log)。
并且我不管用什么哪个角色登陆,我执行jar包 java -jar jarfile 这样产生的文件的权限是rw-rw-r-- 为什么呢?拜托帮我解答下疑惑!万分感谢了!




还有一个问题,通常运行两个jar包,java语言两个jar包之间怎么通讯传递对象?(除过socket)。

麻烦帮我分析下以上两个问题,万分感谢了!
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhmlwaf 2012-08-17
  • 打赏
  • 举报
回复
chmod 777 改权限试试吧。。
xunis 2012-08-17
  • 打赏
  • 举报
回复
沒有人帮帮我吗
xunis 2012-08-17
  • 打赏
  • 举报
回复
貌似问题是这样的,

我用service test start 启动testjar,在test程序中调用了testA jar包,现在用service启动对话就卡到这里了,启动testA没反应,是不是权限的 问题?


我给test
testA都设置的是 test权限(我自己创建的组)
难道testA执行需要的是jvm相关联的某个权限????反正是掉testA没反应!
xunis 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

chmod 777 改权限试试吧。。
[/Quote]

嗨,改变权限应该是可以的,但是总感觉多余了,想搞清楚他为什么会这样子!
xunis 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

chmod 777 改权限试试吧。。
[/Quote]

嗨,改变权限肯定就没问题了,可是我纠结的是他为什么会这样子?
xunis 2012-08-16
  • 打赏
  • 举报
回复

private MappedByteBuffer m_mbb = null;
private RandomAccessFile m_raf = null;
private FileChannel m_fc = null;
private int m_isze = 0 ;

public int CreateShareFile(String name ,int size) throws Exception{
if( name == null || size > 100*1024*1024 )
return 0;
m_isze = size;
m_raf = new RandomAccessFile(name, "rw");
m_fc = m_raf.getChannel();
m_mbb = m_fc.map(MapMode.READ_WRITE, 0, size);
return 1;
}

这个是创建共享文件使用的代码

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧