小编jos*_*lan的帖子

jar文件到底包含什么?

作为实习生,我在我的项目中使用公司代码,他们通常会向我发送一个jar文件来处理.我把它添加到内置pathEclipse,通常一切都很好,花花公子.

但是,我很想知道每个类包含什么,当我尝试打开jar文件中的一个类时,它告诉我需要一个源文件.

这是什么意思?我来自C/C++背景,所以jar类似于已编译的.o文件,我能看到的就是这些.h东西?或者jar我正在使用的文件中是否存在加密的实际代码,因此我无法读取它?

感谢所有的答案!

编辑:
谢谢,伙计们,我知道这有点像存档但我很困惑为什么当我试图打开.class文件时,我得到了一堆随机字符.当我尝试.o在C中打开文件时,输出类似,所以我只想确定.
谢谢!

java jar

76
推荐指数
6
解决办法
11万
查看次数

ZipInputStream.getNextEntry()如何工作?

假设我们有以下代码:

File file = new File("zip1.zip");
ZipInputStream zis = new ZipInputStream(new FileInputStream(file));
Run Code Online (Sandbox Code Playgroud)

假设您有一个包含以下内容的.zip文件:

  • zip1.zip
    • 你好ç
    • world.java
    • 文件夹1
      • foo.c的
      • bar.java
    • foob​​ar.c但是

zis.getNextEntry()将如何迭代?

它会返回hello.c,world.java,folder1,foobar.c并完全忽略folder1中的文件吗?

或者它会返回hello.c,world.java,folder1,foo.c,bar.java,然后是foobar.c?

它甚至会返回folder1,因为它在技术上是一个文件夹而不是文件?

谢谢!

java zip

13
推荐指数
3
解决办法
2万
查看次数

如何使用expect和可选提示?

假设我正在尝试为test.sh编写一个expect脚本,它有三个提示:prompt1,prompt2,prompt3.

我的代码是这样的:

spawn test.sh
expect "prompt1"
send "pass1"
expect "prompt2"
send "pass2"
expect "prompt3"
send "pass3"
Run Code Online (Sandbox Code Playgroud)

但是,prompt2只出现一半的时间.如果prompt2没有显示,则expect脚本会中断.如果没有显示,我如何编写跳过prompt2的期望代码?

编辑:

修正了我的代码:

/usr/bin/expect -c '
spawn ./test.sh
expect {
      "prompt1" {
          send "pass1\r"
          exp_continue
      }
      "prompt2" {
          send "pass2\r"
          exp_continue
      }
      "prompt3" {
          send "pass3\r"
          exp_continue
      }
}
interact return
'
Run Code Online (Sandbox Code Playgroud)

"

这样,脚本的其余部分执行并提供输出.

linux bash expect

13
推荐指数
2
解决办法
1万
查看次数

你如何在结构矢量的ROS中发布消息?

我想发布一个包含两个整数和两个字符串的未知长度的结构的向量.ROS中是否有发布者和订阅者可以执行此操作?

如果没有,我一直在看如何创建自定义消息教程,我想我可以创建一个.msg包含以下内容的文件:

int32 upperLeft
int32 lowerRight
string color
string cameraID
Run Code Online (Sandbox Code Playgroud)

和另一个.msg包含先前消息数组的文件.但是本教程没有给出如何使用数组的示例,所以我不知道在第二个.msg文件中放入什么.此外,我不知道如何在C++程序中使用此自定义消息.

关于如何做到这一点的任何提示都会很棒!

c++ ros

6
推荐指数
2
解决办法
2万
查看次数

Gradle 不断收到“无法获取根项目的未知属性”错误

作为 gradle 的新手,我试图让我的构建步骤取决于自定义任务。

我的build.gradle包含以下代码:

repositories {
  jcenter()
}

apply plugin: 'base'

defaultTasks 'build'
build.dependsOn compileAll

task compileAll {
  doLast {
    println "hello" 
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我删除这build.dependsOn compileAll条线,效果很好。我想我做错了什么,但我不确定是什么。

gradle build.gradle

4
推荐指数
1
解决办法
1万
查看次数

在Linux脚本中,是否可以在同一进程中执行多个命令?

我有一个包含以下内容的脚本:

db2 connect to user01
db2 describe indexes for table table_desc
Run Code Online (Sandbox Code Playgroud)

我想要的是执行第一行的过程与运行第二行的过程不同.这意味着执行第一行的进程获得连接,而运行第二行的第二个进程根本没有连接.这是经过验证的,因为我在第二行收到错误,说没有数据库连接.

是否可以使用相同的进程运行这两个命令?或者至少是一种将第一个过程"加入"到第二个过程的方法?

db2 bash shell ksh

3
推荐指数
1
解决办法
706
查看次数

在 ROS 中使用 yaml-cpp 时出错?

我正在尝试使用 yaml-cpp,根据 wiki 它是系统依赖项,因此我们甚至不需要更改 CMakelists.txt 或 manifest.xml。然而,当我编译代码时,我仍然收到如下错误:

/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:53: undefined reference to `YAML::Parser::Parser(std::basic_istream<char, std::char_traits<char> >&)'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:54: undefined reference to `YAML::Node::Node()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Node::~Node()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Parser::~Parser()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Node::~Node()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Parser::~Parser()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Node::~Node()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Parser::~Parser()'
Run Code Online (Sandbox Code Playgroud)

我添加到 CMakeLists.txt 的唯一代码是:

target_link_libraries(${PROJECT_NAME} yaml-cpp)
rosbuild_add_executable(image_test src/image_test.cpp)
Run Code Online (Sandbox Code Playgroud)

我在 Linux 中使用 fuerte。有人有什么解决办法吗?

编辑:我找到了我的解决方案!我更改了 CMakeLists.txt 以首先构建可执行文件,然后添加 yaml-cpp 库!

rosbuild_add_executable(image_test src/image_test.cpp)
target_link_libraries(image_test yaml-cpp)
Run Code Online (Sandbox Code Playgroud)

我的 CMakeLists.txt 中的这两行工作正常!

yaml-cpp ros

2
推荐指数
1
解决办法
3260
查看次数

如何在 SQLAlchemy 中加入两个查询?

在本例中,我使用示例MySQL classicmodels 数据库

所以我有两个疑问:

products = session.query(Products)
orderdetails = session.query(OrderDetails)
Run Code Online (Sandbox Code Playgroud)

假设在此之后我无法再对数据库进行任何查询,从现在开始我只能加入这两个查询。

我想对它们进行外部联接,以便能够执行以下操作:

for orderdetail, product in query:
    print product.productName, product.productCode, orderdetails.quantityOrdered
Run Code Online (Sandbox Code Playgroud)

但是,每当我对此进行外连接时,我似乎只能获得左连接。

query = orderdetails.outerjoin(Products)
Run Code Online (Sandbox Code Playgroud)

像这样的代码只产生 orderdetails 列:

for q in query:
    # Only gives orderdetails columns
    print q
Run Code Online (Sandbox Code Playgroud)

并做这样的事情:

for orderdetails, product in query:
    print orderdetails, product
Run Code Online (Sandbox Code Playgroud)

给我一个错误:TypeError: 'OrderDetails' object is not iterable

我究竟做错了什么?我也只想要 Products 表中的列。

编辑:

感谢@univerio 的回答,我找到了我的解决方案。我的真正目标是对两个现有查询进行连接,然后对它们执行SUMandCOUNT操作。

SQLAlchemy 基本上只是将查询对象转换为 SQL 语句。该with_entities函数只是将SELECT表达式更改为您传递给它的任何内容。这是我更新的解决方案,其中包括拆包和读取连接:

for productCode, numOrders, quantityOrdered …
Run Code Online (Sandbox Code Playgroud)

python mysql sqlalchemy

2
推荐指数
1
解决办法
3570
查看次数

如何使用Java访问.tar文件中的文件

可能重复:
如何在Java中提取tar文件?

我正在开发一个需要访问.tar文件的应用程序.最简单的方法是什么?我刚刚在一周前以C/C++背景创建Java,所以我不确定是否可以实现复杂的解决方案.

另外,您可以将.tgz文件视为zip条目吗?

谢谢!

java tar

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×3

bash ×2

ros ×2

build.gradle ×1

c++ ×1

db2 ×1

expect ×1

gradle ×1

jar ×1

ksh ×1

linux ×1

mysql ×1

python ×1

shell ×1

sqlalchemy ×1

tar ×1

yaml-cpp ×1

zip ×1