我试图/etc/passwd用Java 解析Linux 文件.我正在阅读java.util.Scanner课程中的每一行,然后java.lang.String.split(String)用来分隔每一行.
问题是该行:
list:x:38:38:Mailing List Manager:/var/list:/bin/sh"
Run Code Online (Sandbox Code Playgroud)
被扫描仪视为3条不同的线:
list:x:38:38:MailingList Manager...当我输入一个我没有从Linux获得的新文件时,Scanner正确解析它.
有什么我不了解Linux中的新行吗?
显然,解决方法是在不使用扫描仪的情况下解析它,但它并不优雅.有谁知道这样做的优雅方式?
有没有办法将文件转换为可以使用的文件Scanner?
甚至两天前:不同线路在不同平台结束的历史原因
编辑
原作者提供的说明:
"我发现我有一个不同的错误导致问题.无视问题"
cucumber-jvm javadocs指出glue元素的目的是指定stepdefinitions和hooks的位置.但是,这对我来说似乎不起作用.假设我在目录a中有我的功能,在目录b中有我的步骤定义.然后,
@Cucumber.Options(
features= "directory_a",
glue="directory_b"
)
Run Code Online (Sandbox Code Playgroud)
将从directory_a加载我的功能文件,但是,它不会从direct_b加载我的步骤定义.但是,如果我使用
@Cucumber.Options(
features= {"directory_a", "directory_b"}
)
Run Code Online (Sandbox Code Playgroud)
然后加载来自directory_a的我的功能,并且还会拾取来自directory_b的步骤定义.这正是我想要的,但是,我不明白为什么前者不起作用?我猜它与它有关,期望URI的格式不同(也许我需要在类路径前面添加//或类似的东西),但我在文档中找不到任何关于此的信息.
这是我的代码片段:
Someclass someObject;
boolean success = true;
try {
someObject = someOperation();
} catch (Exception e) {
success = false;
}
if (success) {
int number = Integer.valueOf(someObject.someMethord());
}
Run Code Online (Sandbox Code Playgroud)
并在行内:
int number = Integer.valueOf(someObject.someMethord());
Run Code Online (Sandbox Code Playgroud)
Java编译器抛出错误说
错误:变量someObject可能尚未初始化.
但是,如果success等于true,则没有办法someObject不会被初始化,为什么我会收到此错误?
此代码导致未定义的行为:
void some_func() {
goto undefined;
{
T x = T();
undefined:
}
}
Run Code Online (Sandbox Code Playgroud)
不调用构造函数.
但是这段代码怎么样?x的析构函数会被调用吗?我想会是,但我想确定.:)
void some_func() {
{
T x = T();
goto out;
}
out:
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译multiple_sources.cpp以在我的计算机上编译.我正在运行Xubuntu Lucid Lynx全面更新.
它将编译没有问题,g++ -c multiple_sources.cpp但当我尝试链接并使g++ multiple_sources.o我得到一个exectuable 得到:
multiple_sources.cpp:(.text+0x3d): undefined reference to `boost::program_options::options_description::m_default_line_length'
multiple_sources.cpp:(.text+0x87): undefined reference to `boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
multiple_sources.cpp:(.text+0x15a): undefined reference to `boost::program_options::options_description::add_options()'
multiple_sources.cpp:(.text+0x17b): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, char const*)'
multiple_sources.cpp:(.text+0x193): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, char const*)'
multiple_sources.cpp:(.text+0x1af): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)'
multiple_sources.cpp:(.text+0x1eb): undefined reference to `boost::program_options::options_description::m_default_line_length'
multiple_sources.cpp:(.text+0x252): undefined reference to `boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
...
Run Code Online (Sandbox Code Playgroud)
et cetera …
在JUnit 4中,通过使用@Parameterized注释很容易在一堆类中测试不变量.关键是对一个参数列表运行一组测试.
如何在JUnit 5中复制它,而不使用JUnit-vintage?
@ParameterizedTest不适用于测试类.@TestTemplate听起来可能是合适的,但是注释的目标也是一种方法.
这种JUnit 4测试的一个例子是:
@RunWith( Parameterized.class )
public class FooInvariantsTest{
@Parameterized.Parameters
public static Collection<Object[]> data(){
return new Arrays.asList(
new Object[]{ new CsvFoo() ),
new Object[]{ new SqlFoo() ),
new Object[]{ new XmlFoo() ),
);
}
private Foo fooUnderTest;
public FooInvariantsTest( Foo fooToTest ){
fooUnderTest = fooToTest;
}
@Test
public void testInvariant1(){
...
}
@Test
public void testInvariant2(){
...
}
}
Run Code Online (Sandbox Code Playgroud) 我使用Apache Thrift来生成代码target/generated-sources.
Thrift编译器生成一个名为的目录gen-java,其中包含所有Java代码.当我执行时mvn compile,代码生成正确target/generated-source/gen-java,但在编译阶段,它抱怨无法找到定义的类gen-java.
据我了解,Maven 2自动添加生成的源,是吗?
如果我的测试代码也依赖于generated-sources,我是否必须手动指定编译器包括?
这个Java教程 说不可变对象在创建后不能改变它的状态.
java.lang.String 有一个领域
/** Cache the hash code for the string */
private int hash; // Default to 0
Run Code Online (Sandbox Code Playgroud)
在hashCode()方法的第一次调用时初始化,因此它在创建后更改:
String s = new String(new char[] {' '});
Field hash = s.getClass().getDeclaredField("hash");
hash.setAccessible(true);
System.out.println(hash.get(s));
s.hashCode();
System.out.println(hash.get(s));
Run Code Online (Sandbox Code Playgroud)
产量
0
32
Run Code Online (Sandbox Code Playgroud)
调用Stringimmutable 是否正确?
我有一个Spring Batch应用程序,我从它开始CommandLineJobRunner.但现在我必须将此应用程序嵌入到我们的企业环境中.我们有一个自己的Launcher应用程序,我必须使用它.对于这个启动器应用程序,我需要一个带有main方法的启动类,它将在启动时调用,并且我必须启动Spring Batch.
是JobLauncher使用此启动器手动分配和运行作业的唯一方法,还是Spring Batch中有一个类支持(或者有人知道样本)?
有点困惑这一切; 所以这就是我想要做的!因此有一个def:
block_basic_DEF =
{
image = "button.png",
name = "basic block",
obj_table = this_obj_table.common_objects_table,
startup = function() init(), <----- This is the problem
}
Run Code Online (Sandbox Code Playgroud)
在另一个文件中,我可以通过以下方式访问:
function spawn(params)
local obj = display.newImage(params.image)
-- etc.
Run Code Online (Sandbox Code Playgroud)
在那里block_basic_DEF我希望传递init()函数的地址,以便在我的spawn中我可以做类似的事情:
params.startup() --ie实际上调用了原始的init函数
java ×5
c++ ×2
boost ×1
cucumber ×1
cucumber-jvm ×1
function ×1
goto ×1
immutability ×1
junit5 ×1
linux ×1
lua ×1
maven ×1
newline ×1
spring-batch ×1
thrift ×1